+
{
onSaveDepends(task, editState.editedDepends);
onUpdateState({
@@ -729,6 +755,7 @@ export const TaskDialog = ({
@@ -948,13 +989,20 @@ export const Tasks = (
(
- props.setIsLoading(true),
- syncTasksWithTwAndDb()
- )}
+ className="relative"
+ onClick={async () => {
+ props.setIsLoading(true);
+ await syncTasksWithTwAndDb();
+ props.setIsLoading(false);
+ }}
>
Sync
+ {unsyncedTaskUuids.size > 0 && (
+
+ {unsyncedTaskUuids.size}
+
+ )}
@@ -1031,6 +1079,7 @@ export const Tasks = (
onMarkComplete={handleMarkComplete}
onMarkDeleted={handleMarkDelete}
isOverdue={isOverdue}
+ isUnsynced={unsyncedTaskUuids.has(task.uuid)}
/>
))
)}
diff --git a/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx b/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx
index 08a4e29..05a0037 100644
--- a/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx
+++ b/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx
@@ -96,6 +96,7 @@ describe('TaskDialog Component', () => {
onMarkComplete: jest.fn(),
onMarkDeleted: jest.fn(),
isOverdue: jest.fn(() => false),
+ isUnsynced: false,
};
beforeEach(() => {
@@ -123,6 +124,31 @@ describe('TaskDialog Component', () => {
expect(statusBadge).toBeInTheDocument();
});
+ test('should display Unsynced badge when isUnsynced is true', () => {
+ const unsyncedProps = {
+ ...defaultProps,
+ isUnsynced: true,
+ };
+
+ render(