+
{
onSaveDepends(task, editState.editedDepends);
onUpdateState({
@@ -730,6 +756,7 @@ export const TaskDialog = ({
@@ -1018,13 +1059,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}
+
+ )}
@@ -1102,6 +1150,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 05847084..d3399a65 100644
--- a/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx
+++ b/frontend/src/components/HomeComponents/Tasks/__tests__/TaskDialog.test.tsx
@@ -100,6 +100,7 @@ describe('TaskDialog Component', () => {
onMarkComplete: jest.fn(),
onMarkDeleted: jest.fn(),
isOverdue: jest.fn(() => false),
+ isUnsynced: false,
};
beforeEach(() => {
@@ -127,6 +128,31 @@ describe('TaskDialog Component', () => {
expect(statusBadge).toBeInTheDocument();
});
+ test('should display Unsynced badge when isUnsynced is true', () => {
+ const unsyncedProps = {
+ ...defaultProps,
+ isUnsynced: true,
+ };
+
+ render(