Skip to content
This repository has been archived by the owner on Nov 20, 2024. It is now read-only.

Commit

Permalink
chore: labels provider & states instances refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
1akhanBaheti committed Jan 18, 2024
1 parent 162cc42 commit 7d1a48f
Show file tree
Hide file tree
Showing 59 changed files with 1,396 additions and 1,202 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
*.log
*.pyc
*.swp
*.freezed.dart
*.g.dart
.DS_Store
.atom/
.buildlog/
Expand Down
2 changes: 1 addition & 1 deletion integration_test/dashboard_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:mocktail/mocktail.dart';
import 'package:plane/bottom_sheets/global_search_sheet.dart';
import 'package:plane/bottom_sheets/select_workspace.dart';
import 'package:plane/models/user_profile_model.dart';
import 'package:plane/models/workspace_model.dart';
import 'package:plane/models/Workspace/workspace_model.dart';
import 'package:plane/provider/dashboard_provider.dart';
import 'package:plane/provider/global_search_provider.dart';
import 'package:plane/provider/profile_provider.dart';
Expand Down
17 changes: 2 additions & 15 deletions lib/bottom_sheets/delete_labels_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class DeleteLabelSheet extends ConsumerStatefulWidget {
class _DeleteLabelSheetState extends ConsumerState<DeleteLabelSheet> {
@override
Widget build(BuildContext context) {
final issuesProvider = ref.read(ProviderList.issuesProvider);
final labelNotifier = ref.read(ProviderList.labelProvider.notifier);
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 20),
child: Column(
Expand Down Expand Up @@ -62,20 +62,7 @@ class _DeleteLabelSheetState extends ConsumerState<DeleteLabelSheet> {
padding: const EdgeInsets.only(bottom: 20),
child: Button(
ontap: () async {
await issuesProvider
.issueLabels(
slug: ref
.watch(ProviderList.workspaceProvider)
.selectedWorkspace
.workspaceSlug,
projID: ref
.watch(ProviderList.projectProvider)
.currentProject['id'],
method: CRUD.delete,
data: {},
labelId: widget.labelId,
ref: ref)
.then((value) {
await labelNotifier.deleteLabel(widget.labelId).then((value) {
ref.read(ProviderList.issuesProvider).filterIssues(
slug: ref
.watch(ProviderList.workspaceProvider)
Expand Down
9 changes: 7 additions & 2 deletions lib/bottom_sheets/delete_leave_project_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ class _DeleteLeaveProjectSheetState
Widget build(BuildContext context) {
final themeProvider = ref.watch(ProviderList.themeProvider);
final projectProvider = ref.watch(ProviderList.projectProvider);
final profileProvider = ref.watch(ProviderList.profileProvider);

return GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
Expand Down Expand Up @@ -234,7 +236,8 @@ class _DeleteLeaveProjectSheetState
postHogService(
eventName: 'LEAVE_PROJECT',
properties: widget.data,
ref: ref);
userEmail: profileProvider.userProfile.email!,
userID: profileProvider.userProfile.id!);
Navigator.of(context)
..pop()
..pop()
Expand All @@ -260,7 +263,9 @@ class _DeleteLeaveProjectSheetState
postHogService(
eventName: 'DELETE_PROJECT',
properties: widget.data,
ref: ref);
userEmail:
profileProvider.userProfile.email!,
userID: profileProvider.userProfile.id!);
}
});
Navigator.of(context)
Expand Down
4 changes: 3 additions & 1 deletion lib/bottom_sheets/delete_project_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class _DeleteProjectSheetState extends ConsumerState<DeleteProjectSheet> {
Widget build(BuildContext context) {
final themeProvider = ref.watch(ProviderList.themeProvider);
final projectProviderRead = ref.watch(ProviderList.projectProvider);
final profileProvider = ref.watch(ProviderList.profileProvider);
return Padding(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
Expand Down Expand Up @@ -209,7 +210,8 @@ class _DeleteProjectSheetState extends ConsumerState<DeleteProjectSheet> {
postHogService(
eventName: 'DELETE_PROJECT',
properties: widget.data,
ref: ref);
userEmail: profileProvider.userProfile.email!,
userID: profileProvider.userProfile.id!);
}
});
Navigator.of(context)
Expand Down
7 changes: 5 additions & 2 deletions lib/bottom_sheets/delete_workspace_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class _DeleteOrLeaveWorkpaceState extends ConsumerState<DeleteOrLeaveWorkpace> {
Widget build(BuildContext context) {
final themeProvider = ref.watch(ProviderList.themeProvider);
final workspaceProvider = ref.watch(ProviderList.workspaceProvider);
final profileProvider = ref.watch(ProviderList.profileProvider);
return GestureDetector(
onTap: () {
FocusScope.of(context).unfocus();
Expand Down Expand Up @@ -240,7 +241,8 @@ class _DeleteOrLeaveWorkpaceState extends ConsumerState<DeleteOrLeaveWorkpace> {
properties: {
'WORKSPACE_NAME': widget.workspaceName
},
ref: ref);
userEmail: profileProvider.userProfile.email!,
userID: profileProvider.userProfile.id!);
await ref
.watch(ProviderList.profileProvider)
.updateProfile(data: {
Expand Down Expand Up @@ -279,7 +281,8 @@ class _DeleteOrLeaveWorkpaceState extends ConsumerState<DeleteOrLeaveWorkpace> {
properties: {
'WORKSPACE_NAME': widget.workspaceName
},
ref: ref);
userEmail: profileProvider.userProfile.email!,
userID: profileProvider.userProfile.id!);
await ref
.watch(ProviderList.profileProvider)
.updateProfile(data: {
Expand Down
1 change: 1 addition & 0 deletions lib/bottom_sheets/filters/filter_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:calendar_date_picker2/calendar_date_picker2.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:plane/models/Project/State/states_model.dart';
import 'package:plane/models/issues.dart';
import 'package:plane/provider/cycles_provider.dart';
import 'package:plane/provider/modules_provider.dart';
Expand Down
57 changes: 51 additions & 6 deletions lib/bottom_sheets/filters/filter_sheet_state.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,57 @@ class _FilterState {
{'icon': Icons.do_disturb_alt_outlined, 'text': 'none', 'color': '#A3A3A3'}
];

List states = [
{'id': 'backlog', 'name': 'Backlog', 'color': '#5e6ad2'},
{'id': 'unstarted', 'name': 'Unstarted', 'color': '#eb5757'},
{'id': 'started', 'name': 'Started', 'color': '#26b5ce'},
{'id': 'completed', 'name': 'Completed', 'color': '#f2c94c'},
{'id': 'cancelled', 'name': 'Cancelled', 'color': '#4cb782'}
List<StatesModel> states = [
StatesModel.initialize().copyWith(
group: 'backlog',
name: 'Backlog',
color: '#5e6ad2',
stateIcon: SvgPicture.asset(
'assets/svg_images/circle.svg',
color: '#5e6ad2'.toColor(),
height: 20,
width: 20,
)),
StatesModel.initialize().copyWith(
group: 'unstarted',
name: 'Unstarted',
color: '#eb5757',
stateIcon: SvgPicture.asset(
'assets/svg_images/unstarted.svg',
color: '#eb5757'.toColor(),
height: 20,
width: 20,
)),
StatesModel.initialize().copyWith(
group: 'started',
name: 'Started',
color: '#26b5ce',
stateIcon: SvgPicture.asset(
'assets/svg_images/in_progress.svg',
color: '#26b5ce'.toColor(),
height: 20,
width: 20,
)),
StatesModel.initialize().copyWith(
group: 'completed',
name: 'Completed',
color: '#f2c94c',
stateIcon: SvgPicture.asset(
'assets/svg_images/done.svg',
color: '#f2c94c'.toColor(),
height: 20,
width: 20,
)),
StatesModel.initialize().copyWith(
group: 'cancelled',
name: 'Cancelled',
color: '#4cb782',
stateIcon: SvgPicture.asset(
'assets/svg_images/cancelled.svg',
color: '#4cb782'.toColor(),
height: 20,
width: 20,
))
];

Filters filters = Filters(
Expand Down
33 changes: 16 additions & 17 deletions lib/bottom_sheets/filters/widgets/labels_filter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,14 @@ class _LabelFilter extends ConsumerStatefulWidget {
class __LabelFilterState extends ConsumerState<_LabelFilter> {
@override
Widget build(BuildContext context) {
final ThemeProvider themeProvider = ref.read(ProviderList.themeProvider);
final IssuesProvider issuesProvider =
ref.watch(ProviderList.issuesProvider);
final MyIssuesProvider myIssuesProvider =
ref.watch(ProviderList.myIssuesProvider);
final themeProvider = ref.read(ProviderList.themeProvider);
final labelsProvider = ref.watch(ProviderList.labelProvider);

return CustomExpansionTile(
title: 'Labels',
child: (widget.state.issueCategory == IssueCategory.myIssues
? myIssuesProvider.labels
: issuesProvider.labels)
? labelsProvider.workspaceLabels
: labelsProvider.projectLabels)
.isEmpty
? Container(
padding: const EdgeInsets.only(left: 25),
Expand All @@ -31,26 +29,27 @@ class __LabelFilterState extends ConsumerState<_LabelFilter> {
)
: Wrap(
children: (widget.state.issueCategory == IssueCategory.myIssues
? myIssuesProvider.labels
: issuesProvider.labels)
.map((e) => GestureDetector(
? labelsProvider.workspaceLabels
: labelsProvider.projectLabels)
.values
.map((label) => GestureDetector(
onTap: () {
if (widget.state.filters.labels.contains(e['id'])) {
widget.state.filters.labels.remove(e['id']);
if (widget.state.filters.labels.contains(label.id)) {
widget.state.filters.labels.remove(label.id);
} else {
widget.state.filters.labels.add(e['id']);
widget.state.filters.labels.add(label.id);
}
widget.state.setState();
},
child: RectangularChip(
ref: ref,
icon: CircleAvatar(
radius: 5,
backgroundColor: e['color'].toString().toColor()),
text: e['name'],
backgroundColor: label.color.toColor()),
text: label.name,
selected:
widget.state.filters.labels.contains(e['id']),
color: widget.state.filters.labels.contains(e['id'])
widget.state.filters.labels.contains(label.id),
color: widget.state.filters.labels.contains(label.id)
? themeProvider.themeManager.primaryColour
: themeProvider
.themeManager.secondaryBackgroundDefaultColor,
Expand Down
35 changes: 16 additions & 19 deletions lib/bottom_sheets/filters/widgets/state_filter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,50 +19,47 @@ class __StateFilterState extends ConsumerState<_StateFilter> {
children: (widget.state.issueCategory == IssueCategory.myIssues
? widget.state.states
: statesProvider.projectStates.values)
.map((e) {
final String key = widget.state.issueCategory == IssueCategory.myIssues
? 'id'
: 'group';
.map((state) {
return (widget.state.isArchived &&
(e[key] == 'backlog' ||
e[key] == 'unstarted' ||
e[key] == 'started'))
(state.group == 'backlog' ||
state.group == 'unstarted' ||
state.group == 'started'))
? Container()
: GestureDetector(
onTap: () {
if (widget.state.filters.states.contains(e['id'])) {
widget.state.filters.states.remove(e['id']);
if (widget.state.filters.states.contains(state.group)) {
widget.state.filters.states.remove(state.group);
} else {
widget.state.filters.states.add(e['id']);
widget.state.filters.states.add(state.group);
}
widget.state.setState();
},
child: RectangularChip(
ref: ref,
icon: SvgPicture.asset(
e[key] == 'backlog'
state.group == 'backlog'
? 'assets/svg_images/circle.svg'
: e[key] == 'cancelled'
: state.group == 'cancelled'
? 'assets/svg_images/cancelled.svg'
: e[key] == 'started'
: state.group == 'started'
? 'assets/svg_images/in_progress.svg'
: e[key] == 'completed'
: state.group == 'completed'
? 'assets/svg_images/done.svg'
: 'assets/svg_images/unstarted.svg',
colorFilter: ColorFilter.mode(
widget.state.filters.states.contains(e['id'])
widget.state.filters.states.contains(state.group)
? (Colors.white)
: e['color'].toString().toColor(),
: state.color.toColor(),
BlendMode.srcIn),
height: 20,
width: 20,
),
text: e['name'],
color: widget.state.filters.states.contains(e['id'])
text: state.name,
color: widget.state.filters.states.contains(state.group)
? themeProvider.themeManager.primaryColour
: themeProvider
.themeManager.secondaryBackgroundDefaultColor,
selected: widget.state.filters.states.contains(e['id']),
selected: widget.state.filters.states.contains(state.group),
),
);
}).toList()),
Expand Down
24 changes: 12 additions & 12 deletions lib/bottom_sheets/label_sheet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class _LabelSheetState extends ConsumerState<LabelSheet> {
@override
Widget build(BuildContext context) {
final themeProvider = ref.watch(ProviderList.themeProvider);
final issuesProvider = ref.watch(ProviderList.issuesProvider);
final labelProvider = ref.watch(ProviderList.labelProvider);
final pageProvider = ref.watch(ProviderList.pageProvider);
final workspaceProvider = ref.watch(ProviderList.workspaceProvider);
final projectProvider = ref.watch(ProviderList.projectProvider);
Expand Down Expand Up @@ -84,16 +84,17 @@ class _LabelSheetState extends ConsumerState<LabelSheet> {
),
Container(height: 20),
Wrap(
children: issuesProvider.labels.map((label) {
return search.text.toLowerCase().contains(
label["name"].toString().toLowerCase()) ||
children: labelProvider.projectLabels.values.map((label) {
return search.text
.toLowerCase()
.contains(label.name.toLowerCase()) ||
search.text.trim().isEmpty
? GestureDetector(
onTap: () {
if (selectedLabels.contains(label["id"])) {
selectedLabels.remove(label["id"]);
if (selectedLabels.contains(label.id)) {
selectedLabels.remove(label.id);
} else {
selectedLabels.add(label["id"]);
selectedLabels.add(label.id);
}
setState(() {});
},
Expand All @@ -103,7 +104,7 @@ class _LabelSheetState extends ConsumerState<LabelSheet> {
padding: const EdgeInsets.symmetric(
horizontal: 15, vertical: 10),
decoration: BoxDecoration(
color: selectedLabels.contains(label["id"])
color: selectedLabels.contains(label.id)
? themeProvider.themeManager.primaryColour
: (themeProvider.themeManager
.primaryBackgroundDefaultColor),
Expand All @@ -118,16 +119,15 @@ class _LabelSheetState extends ConsumerState<LabelSheet> {
children: [
CircleAvatar(
radius: 6,
backgroundColor:
label["color"].toString().toColor()),
backgroundColor: label.color.toColor()),
const SizedBox(
width: 10,
),
CustomText(
label["name"],
label.name,
type: FontStyle.Small,
overrride: true,
color: selectedLabels.contains(label["id"])
color: selectedLabels.contains(label.id)
? Colors.white
: (themeProvider
.themeManager.primaryTextColor),
Expand Down
Loading

0 comments on commit 7d1a48f

Please sign in to comment.