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

Fe reset workspace button #717

Merged
merged 8 commits into from
Dec 25, 2023
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
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ class Workspace {
List<Node> references;
int fromNodeId;
int requestId;
bool pending;
bool pendingReviewer;
bool pendingContributor;

List<Comment> comments;

Workspace({
required this.workspaceId,
required this.workspaceTitle,
Expand All @@ -33,7 +38,11 @@ class Workspace {
required this.references,
required this.fromNodeId,
required this.requestId,
required this.pending,
required this.pendingContributor,
required this.pendingReviewer,
required this.comments,

});

factory Workspace.fromJson(Map<String, dynamic> jsonString) {
Expand Down Expand Up @@ -75,7 +84,13 @@ List<Comment> comments = commentsList.map((e) => Comment.fromJson(e)).toList();
references: references,
requestId: jsonString["request_id"] == "" ? -1 : jsonString["request_id"],
fromNodeId: jsonString["from_node_id"] == "" ? -1 : jsonString["from_node_id"],

pending: jsonString["pending_reviewer"] || jsonString["pending_collab"],
pendingReviewer: jsonString["pending_reviewer"],
pendingContributor: jsonString["pending_collab"],

comments: comments,

);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,31 @@ class WorkspaceProvider with ChangeNotifier {
}
}

Future<void> setProof(int entryId, int workspaceId, String token) async {

Future<void> resetWorkspace(int workspaceId, String token) async {
Uri url = Uri.parse("${Constants.apiUrl}/reset_workspace_state/");

var request = http.MultipartRequest('POST', url);
request.headers.addAll({
"Authorization": "Token $token",
"content-type": "application/json",
});
request.fields.addAll({
'workspace_id': "$workspaceId",
});

http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
//print(await response.stream.bytesToString());
notifyListeners();
} else if (response.statusCode == 400) {
throw WorkspaceDoesNotExist();
} else {
throw Exception("Something has happened");
}
}

Future<void> setProof(int entryId, int workspaceId, String token) async {
Uri url = Uri.parse("${Constants.apiUrl}/set_workspace_proof/");
var request = http.MultipartRequest('POST', url);
request.headers.addAll({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,17 @@ class MobileWorkspacePage extends StatefulWidget {
final Function addReview;
final Function updateReviewRequest;
final Function updateCollaborationRequest;

final Function resetWorkspace;

final Function setProof;
final Function setDisproof;
final Function setTheorem;
final Function removeDisproof;
final Function removeTheorem;
final Function removeProof;


const MobileWorkspacePage({
super.key,
required this.workspace,
Expand All @@ -61,12 +65,15 @@ class MobileWorkspacePage extends StatefulWidget {
required this.addReview,
required this.updateReviewRequest,
required this.updateCollaborationRequest,
required this.resetWorkspace,

required this.removeDisproof,
required this.removeProof,
required this.removeTheorem,
required this.setDisproof,
required this.setProof,
required this.setTheorem,

});

@override
Expand Down Expand Up @@ -376,7 +383,8 @@ class _MobileWorkspacesPageState extends State<MobileWorkspacePage> {
: (widget.workspaces != null && widget.workspace != null)
? MobileWorkspaceContent(
workspace: widget.workspace!,
pending: (workspaceIndex >= widget.workspaces!.workspaces.length),
pending: widget.workspace!.pending,

createNewEntry: widget.createNewEntry,
editEntry: widget.editEntry,
deleteEntry: widget.deleteEntry,
Expand All @@ -391,6 +399,8 @@ class _MobileWorkspacesPageState extends State<MobileWorkspacePage> {
sendWorkspaceToReview: widget.sendWorkspaceToReview,
addReview: widget.addReview,

resetWorkspace: widget.resetWorkspace,

setProof: widget.setProof,
setDisproof: widget.setDisproof,
setTheorem: widget.setTheorem,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:collaborative_science_platform/models/workspaces_page/workspace.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
Expand All @@ -6,15 +7,18 @@ import 'package:collaborative_science_platform/models/user.dart';
import 'package:collaborative_science_platform/utils/colors.dart';
import 'package:collaborative_science_platform/screens/profile_page/profile_page.dart';


class ContributorCard extends StatelessWidget {
final User contributor;
final bool pending;
final bool workspacePending;
final Function updateRequest;

const ContributorCard({
super.key,
required this.contributor,
required this.pending,
required this.workspacePending,
required this.updateRequest,
});

@override
Expand Down Expand Up @@ -69,17 +73,17 @@ class ContributorCard extends StatelessWidget {
),
],
),
if (pending) IconButton(
icon: const Icon(
CupertinoIcons.clear_circled,
color: AppColors.warningColor,
if (pending && !workspacePending)
IconButton(
icon: const Icon(
CupertinoIcons.clear_circled,
color: AppColors.warningColor,
),
onPressed: () async {
// function to delete collaboration request
await updateRequest(contributor.requestId, RequestStatus.rejected);
},
),
onPressed: () {
// function to delete collaboration request
//TODO - requests id's are absent for now.
//updateRequest();
},
),
],
),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ class MobileWorkspaceContent extends StatefulWidget {
final Function removeSemanticTag;
final Function sendWorkspaceToReview;
final Function addReview;
final Function resetWorkspace;

final Function setProof;
final Function setDisproof;
final Function setTheorem;
Expand Down Expand Up @@ -59,6 +61,9 @@ class MobileWorkspaceContent extends StatefulWidget {
required this.updateRequest,
required this.sendWorkspaceToReview,
required this.addReview,

required this.resetWorkspace,

required this.removeDisproof,
required this.removeProof,
required this.removeTheorem,
Expand All @@ -67,6 +72,7 @@ class MobileWorkspaceContent extends StatefulWidget {
required this.setTheorem,
required this.displayCommentSidebar,


});

@override
Expand Down Expand Up @@ -100,10 +106,12 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
return Center(
child: IconButton(
iconSize: 40.0,
onPressed: widget.workspace.status != WorkspaceStatus.workable ? () {} : onPressed,
onPressed: (widget.workspace.status != WorkspaceStatus.workable || widget.workspace.pending)
? () {}
: onPressed,
icon: Icon(
Icons.add,
color: widget.workspace.status != WorkspaceStatus.workable
color: (widget.workspace.status != WorkspaceStatus.workable || widget.workspace.pending)
? Colors.grey[200]
: Colors.grey[800],
),
Expand Down Expand Up @@ -143,8 +151,11 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return SemanticTagCard(
finalized: widget.workspace.status != WorkspaceStatus.workable,

finalized:
widget.workspace.status != WorkspaceStatus.workable || widget.workspace.pending,
tag: widget.workspace.tags[index],

backgroundColor: const Color.fromARGB(255, 220, 235, 220),
onDelete: () async {
await widget.removeSemanticTag(widget.workspace.tags[index].tagId);
Expand All @@ -168,7 +179,8 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
itemBuilder: (context, index) {
return (index < length)
? MobileEntryCard(
finalized: widget.workspace.status != WorkspaceStatus.workable,
finalized: widget.workspace.status != WorkspaceStatus.workable ||
widget.workspace.pending,
entry: widget.workspace.entries[index],
onDelete: () async {
await widget.deleteEntry(widget.workspace.entries[index].entryId);
Expand All @@ -187,7 +199,8 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
onCreate: widget.createNewEntry,
backgroundColor: const Color.fromARGB(255, 220, 220, 240),
isMobile: true,
finalized: widget.workspace.status != WorkspaceStatus.workable,
finalized: widget.workspace.status != WorkspaceStatus.workable ||
widget.workspace.pending,
);
},
),
Expand All @@ -208,7 +221,8 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
onCreate: widget.createNewEntry,
backgroundColor: const Color.fromARGB(255, 220, 220, 240),
isMobile: true,
finalized: widget.workspace.status != WorkspaceStatus.workable,
finalized:
widget.workspace.status != WorkspaceStatus.workable || widget.workspace.pending,
),
],
);
Expand All @@ -235,11 +249,16 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
? ContributorCard(
contributor: widget.workspace.contributors[index],
pending: false,
workspacePending: widget.workspace.pending,
updateRequest: widget.updateRequest,
)
: (index < length + pendingLength)
? ContributorCard(
contributor: widget.workspace.pendingContributors[index - length],
pending: true,
workspacePending: widget.workspace.pending,
updateRequest: widget.updateRequest,

)
: addIcon(() {
showDialog(context: context, builder: (context) => alertDialog);
Expand Down Expand Up @@ -312,7 +331,8 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
style: TextStyles.title2,
),
),
if (widget.workspace.status == WorkspaceStatus.workable)
if (widget.workspace.status == WorkspaceStatus.workable &&
!widget.workspace.pending)
IconButton(
onPressed: () {
setState(() {
Expand All @@ -333,6 +353,7 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
obscureText: false,
height: 200),
),
if (!widget.workspace.pending)
SizedBox(
width: 50,
height: 50,
Expand All @@ -349,25 +370,26 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
)
],
),
if (widget.workspace.requestId == -1)
if (!widget.workspace.pending && widget.workspace.requestId == -1)
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5.0, vertical: 4.0),
child: AppButton(
isActive: widget.workspace.status == WorkspaceStatus.workable ||
widget.workspace.status == WorkspaceStatus.finalized,
height: 40,
isActive: widget.workspace.status == WorkspaceStatus.workable ||
widget.workspace.status == WorkspaceStatus.finalized ||
widget.workspace.status == WorkspaceStatus.rejected,
text: widget.pending
? "Accept Workspace"
: (widget.workspace.status == WorkspaceStatus.workable
: widget.workspace.status == WorkspaceStatus.workable
? "Finalize Workspace"
: (widget.workspace.status == WorkspaceStatus.finalized
: widget.workspace.status == WorkspaceStatus.finalized
? "Send to Review"
: "In Review")),
icon: widget.pending
? const Icon(Icons.approval)
: (widget.workspace.status == WorkspaceStatus.workable
? const Icon(Icons.lock)
: const Icon(Icons.send)),
: (widget.workspace.status == WorkspaceStatus.rejected
? "Reset Workspace"
: (widget.workspace.status == WorkspaceStatus.inReview
? "In Review"
: "Published")),

onTap: widget.pending
? () {
// accept or reject the review
Expand Down Expand Up @@ -396,13 +418,16 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
);
}
: () {
// send to review
showDialog(
context: context,
builder: (context) => AppAlertDialog(
text: widget.workspace.status == WorkspaceStatus.workable
? "Do you want to finalize the workspace?"
: "Do you want to send it to review?",

: (widget.workspace.status == WorkspaceStatus.finalized
? "Do you want to send it to review?"
: "Do you want to reset the workspace?"),

actions: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 5),
Expand All @@ -413,10 +438,16 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
if (widget.workspace.status == WorkspaceStatus.workable) {
widget.finalizeWorkspace();
Navigator.of(context).pop();
} else {
} else if (widget.workspace.status ==
WorkspaceStatus.finalized) {
/* Send to review */
widget.sendWorkspaceToReview();
Navigator.of(context).pop();
} else if (widget.workspace.status ==
WorkspaceStatus.rejected) {
widget.resetWorkspace();
Navigator.of(context).pop();

}
},
),
Expand All @@ -437,7 +468,10 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
},
),
),
if (widget.workspace.requestId != -1)
if (!widget.workspace.pending &&
widget.workspace.requestId != -1 &&
widget.workspace.status == WorkspaceStatus.inReview)

/** adjust it to check if the user is reviewer of this workspace */
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5.0, vertical: 4.0),
Expand Down Expand Up @@ -535,11 +569,11 @@ class _MobileWorkspaceContentState extends State<MobileWorkspaceContent> {
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: Divider(),
),
if (widget.workspace.requestId == -1)
if (widget.workspace.requestId == -1 || widget.workspace.pendingContributor)
const SubSectionTitle(title: "Contributors"),
if (widget.workspace.requestId == -1)
if (widget.workspace.requestId == -1 || widget.workspace.pendingContributor)
contributorList(),
if (widget.workspace.requestId == -1)
if (widget.workspace.requestId == -1 || widget.workspace.pendingContributor)
const Padding(
padding: EdgeInsets.symmetric(horizontal: 12.0),
child: Divider(),
Expand Down
Loading