Dedicated Assigned to me Tasks Tab
This commit is contained in:
parent
546c254326
commit
7c3a5a1cef
|
|
@ -151,9 +151,7 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
dateRange: _selectedDateRange,
|
||||
latestAssigneeByTaskId: latestAssigneeByTaskId,
|
||||
);
|
||||
final summaryDashboard = _StatusSummaryRow(
|
||||
counts: _taskStatusCounts(filteredTasks),
|
||||
);
|
||||
|
||||
final filterHeader = Wrap(
|
||||
spacing: 12,
|
||||
runSpacing: 12,
|
||||
|
|
@ -241,17 +239,21 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
),
|
||||
],
|
||||
);
|
||||
final listBody = TasQAdaptiveList<Task>(
|
||||
items: filteredTasks,
|
||||
|
||||
// reusable helper for rendering a list given a subset of tasks
|
||||
Widget makeList(List<Task> tasksList) {
|
||||
final summary = _StatusSummaryRow(
|
||||
counts: _taskStatusCounts(tasksList),
|
||||
);
|
||||
return TasQAdaptiveList<Task>(
|
||||
items: tasksList,
|
||||
onRowTap: (task) => context.go('/tasks/${task.id}'),
|
||||
summaryDashboard: summaryDashboard,
|
||||
summaryDashboard: summary,
|
||||
filterHeader: filterHeader,
|
||||
onRequestRefresh: () {
|
||||
// For server-side pagination, update the query provider
|
||||
ref.read(tasksQueryProvider.notifier).state = const TaskQuery(
|
||||
offset: 0,
|
||||
limit: 50,
|
||||
);
|
||||
ref.read(tasksQueryProvider.notifier).state =
|
||||
const TaskQuery(offset: 0, limit: 50);
|
||||
},
|
||||
isLoading: false,
|
||||
columns: [
|
||||
|
|
@ -322,7 +324,9 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
],
|
||||
mobileTileBuilder: (context, task, actions) {
|
||||
final ticketId = task.ticketId;
|
||||
final ticket = ticketId == null ? null : ticketById[ticketId];
|
||||
final ticket = ticketId == null
|
||||
? null
|
||||
: ticketById[ticketId];
|
||||
final officeId = ticket?.officeId ?? task.officeId;
|
||||
final officeName = officeId == null
|
||||
? 'Unassigned office'
|
||||
|
|
@ -332,7 +336,10 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
latestAssigneeByTaskId[task.id],
|
||||
);
|
||||
final subtitle = _buildSubtitle(officeName, task.status);
|
||||
final hasMention = _hasTaskMention(notificationsAsync, task);
|
||||
final hasMention = _hasTaskMention(
|
||||
notificationsAsync,
|
||||
task,
|
||||
);
|
||||
final typingState = ref.watch(
|
||||
typingIndicatorProvider(task.id),
|
||||
);
|
||||
|
|
@ -397,6 +404,16 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
final currentUserId = profileAsync.valueOrNull?.id;
|
||||
final myTasks = currentUserId == null
|
||||
? <Task>[]
|
||||
: filteredTasks
|
||||
.where(
|
||||
(t) => latestAssigneeByTaskId[t.id] == currentUserId,
|
||||
)
|
||||
.toList();
|
||||
|
||||
return Column(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
|
|
@ -415,7 +432,29 @@ class _TasksListScreenState extends ConsumerState<TasksListScreen> {
|
|||
),
|
||||
),
|
||||
),
|
||||
Expanded(child: listBody),
|
||||
Expanded(
|
||||
child: DefaultTabController(
|
||||
length: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
const TabBar(
|
||||
tabs: [
|
||||
Tab(text: 'My Tasks'),
|
||||
Tab(text: 'All Tasks'),
|
||||
],
|
||||
),
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
children: [
|
||||
makeList(myTasks),
|
||||
makeList(filteredTasks),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user