Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
33b7ec9
Update pubspec.lock
gabrielbmoro Nov 29, 2025
55bbac4
Update flutter version
gabrielbmoro Nov 29, 2025
552e16d
Breaking taskhelper down into use cases
gabrielbmoro Nov 30, 2025
1871f87
TasksVIewModel working as expected in checklist_full_widget
gabrielbmoro Dec 2, 2025
73c11fa
Update unit tests after moving task view model to the components package
gabrielbmoro Dec 2, 2025
4416d77
Remove non used component
gabrielbmoro Dec 2, 2025
59839ed
Map when the cell is selected
gabrielbmoro Dec 2, 2025
97a9804
Update UI tests to consider only small screen for now
gabrielbmoro Dec 2, 2025
f55d0d3
Creating isBigSize variable
gabrielbmoro Dec 5, 2025
3c43ba2
Wrap body at a Padding widget
gabrielbmoro Dec 5, 2025
06474a3
Add navigation rails menu
gabrielbmoro Dec 5, 2025
7c659eb
Navigation rails component
gabrielbmoro Dec 5, 2025
c2be1b0
Add new check list event for navigation rails widget
gabrielbmoro Dec 5, 2025
e2e5a8f
Add support for adding task in large screens perspective
gabrielbmoro Dec 5, 2025
d75c5f8
Solve lint issue
gabrielbmoro Dec 5, 2025
058b4b7
Add some comment around the _checklistFullKey usage
gabrielbmoro Dec 7, 2025
690c8eb
Some updates
gabrielbmoro Dec 7, 2025
79ed8ba
Remove unnecessary data class to wrap text values for checklists screen
gabrielbmoro Dec 7, 2025
a50cc31
Remove unnecessary data class to wrap text values for checklist screen
gabrielbmoro Dec 7, 2025
0935c7e
Remove unnecessary data class to wrap text values for checklist screen
gabrielbmoro Dec 7, 2025
be0ab6d
Remove unnecessary data class to wrap text values for tasks screen
gabrielbmoro Dec 7, 2025
1a2f91d
Solve broken unit tests
gabrielbmoro Dec 7, 2025
6ecfc03
Try to use danger 2.0.0
gabrielbmoro Dec 7, 2025
aaf6f7a
Back Danger to ˆ2.0.0
gabrielbmoro Dec 7, 2025
98ff4e6
Trying specific working dire
gabrielbmoro Dec 7, 2025
4522e17
Remove specific dir
gabrielbmoro Dec 7, 2025
2f7a5bc
Remove danger
gabrielbmoro Dec 7, 2025
4641a2f
Remove danger
gabrielbmoro Dec 7, 2025
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
2 changes: 1 addition & 1 deletion .github/actions/setup-flutter/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ runs:
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: '3.32.6' # Set the desired Flutter version
flutter-version: '3.38.3' # Set the desired Flutter version

- name: Install dependencies
run: flutter pub get
Expand Down
32 changes: 0 additions & 32 deletions .github/workflows/danger.yml

This file was deleted.

29 changes: 0 additions & 29 deletions dangerfile.dart

This file was deleted.

21 changes: 21 additions & 0 deletions lib/domain/format_task_list_message_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:injectable/injectable.dart';
import 'package:todoapp/data/model/task.dart';

abstract class FormatTaskListMessageUseCase {
String formatTaskList({required List<Task> tasks});
}

@Injectable(as: FormatTaskListMessageUseCase)
class FormatTaskListMessageUseCaseImpl extends FormatTaskListMessageUseCase {
@override
String formatTaskList({required List<Task> tasks}) {
var checklist = '';

for (var task in tasks) {
if (task.isCompleted == false) {
checklist += '- ${task.title}\n';
}
}
return checklist;
}
}
25 changes: 25 additions & 0 deletions lib/domain/progress_counter_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import 'package:injectable/injectable.dart';
import 'package:todoapp/data/model/task.dart';

abstract class ProgressCounterUseCase {
double calculateProgress({required List<Task> tasks});
}

@Injectable(as: ProgressCounterUseCase)
class ProgressCounterUseCaseImpl extends ProgressCounterUseCase {
@override
double calculateProgress({required List<Task> tasks}) {
int completedTasks = 0;
for (var task in tasks) {
if (task.isCompleted) {
completedTasks++;
}
}

if (tasks.isNotEmpty) {
return completedTasks / tasks.length.toDouble();
} else {
return 0.0;
}
}
}
15 changes: 15 additions & 0 deletions lib/domain/should_show_share_button_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import 'package:injectable/injectable.dart';
import 'package:todoapp/data/model/task.dart';

abstract class ShouldShowShareButtonUseCase {

bool shouldShowShareButton(List<Task> tasks);
}

@Injectable(as: ShouldShowShareButtonUseCase)
class ShouldShowShareButtonUseCaseImpl extends ShouldShowShareButtonUseCase {
@override
bool shouldShowShareButton(List<Task> tasks) {
return tasks.any((task) => task.isCompleted == false);
}
}
30 changes: 30 additions & 0 deletions lib/domain/tasks_comparator_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:injectable/injectable.dart';
import 'package:todoapp/data/model/task.dart';

abstract class TasksComparatorUseCase {
bool areThemEqual({required List<Task> oldList, required List<Task> newList});
}

@Injectable(as: TasksComparatorUseCase)
class TasksComparatorUseCaseImpl extends TasksComparatorUseCase {
@override
bool areThemEqual(
{required List<Task> oldList, required List<Task> newList}) {
if (oldList.length == newList.length) {
if (oldList.isEmpty && newList.isEmpty) {
return true;
} else {
for (var i = 0; i < oldList.length; i++) {
if (oldList[i] == newList[i]) {
continue;
} else {
return false;
}
}
}
} else {
return false;
}
return true;
}
}
66 changes: 0 additions & 66 deletions lib/domain/tasks_helper.dart

This file was deleted.

27 changes: 27 additions & 0 deletions lib/domain/tasks_sorter_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'package:injectable/injectable.dart';
import 'package:todoapp/data/model/task.dart';

abstract class TasksSorterUseCase {
List<Task> sortByCompletedStatus(List<Task> tasks);
}

@Injectable(as: TasksSorterUseCase)
class TasksSorterUseCaseImpl implements TasksSorterUseCase {
@override
List<Task> sortByCompletedStatus(List<Task> tasks) {
List<Task> tasksToBeSorted = List.from(tasks);
tasksToBeSorted.sort((a, b) => _sort(a, b));
return tasksToBeSorted;
}

int _sort(Task a, Task b) {
if (a.isCompleted == false && b.isCompleted) {
return -1;
} else if (a.isCompleted && b.isCompleted == false) {
return 1;
} else {
return 0;
}
}

}
Loading