Skip to content

Commit d77aaf2

Browse files
authored
Merge pull request #63 from CodandoTV/feature/some-updates
Make desktop version adaptable
2 parents f646061 + 4641a2f commit d77aaf2

43 files changed

Lines changed: 848 additions & 643 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/actions/setup-flutter/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ runs:
77
- name: Set up Flutter
88
uses: subosito/flutter-action@v2
99
with:
10-
flutter-version: '3.32.6' # Set the desired Flutter version
10+
flutter-version: '3.38.3' # Set the desired Flutter version
1111

1212
- name: Install dependencies
1313
run: flutter pub get

.github/workflows/danger.yml

Lines changed: 0 additions & 32 deletions
This file was deleted.

dangerfile.dart

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:todoapp/data/model/task.dart';
3+
4+
abstract class FormatTaskListMessageUseCase {
5+
String formatTaskList({required List<Task> tasks});
6+
}
7+
8+
@Injectable(as: FormatTaskListMessageUseCase)
9+
class FormatTaskListMessageUseCaseImpl extends FormatTaskListMessageUseCase {
10+
@override
11+
String formatTaskList({required List<Task> tasks}) {
12+
var checklist = '';
13+
14+
for (var task in tasks) {
15+
if (task.isCompleted == false) {
16+
checklist += '- ${task.title}\n';
17+
}
18+
}
19+
return checklist;
20+
}
21+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:todoapp/data/model/task.dart';
3+
4+
abstract class ProgressCounterUseCase {
5+
double calculateProgress({required List<Task> tasks});
6+
}
7+
8+
@Injectable(as: ProgressCounterUseCase)
9+
class ProgressCounterUseCaseImpl extends ProgressCounterUseCase {
10+
@override
11+
double calculateProgress({required List<Task> tasks}) {
12+
int completedTasks = 0;
13+
for (var task in tasks) {
14+
if (task.isCompleted) {
15+
completedTasks++;
16+
}
17+
}
18+
19+
if (tasks.isNotEmpty) {
20+
return completedTasks / tasks.length.toDouble();
21+
} else {
22+
return 0.0;
23+
}
24+
}
25+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:todoapp/data/model/task.dart';
3+
4+
abstract class ShouldShowShareButtonUseCase {
5+
6+
bool shouldShowShareButton(List<Task> tasks);
7+
}
8+
9+
@Injectable(as: ShouldShowShareButtonUseCase)
10+
class ShouldShowShareButtonUseCaseImpl extends ShouldShowShareButtonUseCase {
11+
@override
12+
bool shouldShowShareButton(List<Task> tasks) {
13+
return tasks.any((task) => task.isCompleted == false);
14+
}
15+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:todoapp/data/model/task.dart';
3+
4+
abstract class TasksComparatorUseCase {
5+
bool areThemEqual({required List<Task> oldList, required List<Task> newList});
6+
}
7+
8+
@Injectable(as: TasksComparatorUseCase)
9+
class TasksComparatorUseCaseImpl extends TasksComparatorUseCase {
10+
@override
11+
bool areThemEqual(
12+
{required List<Task> oldList, required List<Task> newList}) {
13+
if (oldList.length == newList.length) {
14+
if (oldList.isEmpty && newList.isEmpty) {
15+
return true;
16+
} else {
17+
for (var i = 0; i < oldList.length; i++) {
18+
if (oldList[i] == newList[i]) {
19+
continue;
20+
} else {
21+
return false;
22+
}
23+
}
24+
}
25+
} else {
26+
return false;
27+
}
28+
return true;
29+
}
30+
}

lib/domain/tasks_helper.dart

Lines changed: 0 additions & 66 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import 'package:injectable/injectable.dart';
2+
import 'package:todoapp/data/model/task.dart';
3+
4+
abstract class TasksSorterUseCase {
5+
List<Task> sortByCompletedStatus(List<Task> tasks);
6+
}
7+
8+
@Injectable(as: TasksSorterUseCase)
9+
class TasksSorterUseCaseImpl implements TasksSorterUseCase {
10+
@override
11+
List<Task> sortByCompletedStatus(List<Task> tasks) {
12+
List<Task> tasksToBeSorted = List.from(tasks);
13+
tasksToBeSorted.sort((a, b) => _sort(a, b));
14+
return tasksToBeSorted;
15+
}
16+
17+
int _sort(Task a, Task b) {
18+
if (a.isCompleted == false && b.isCompleted) {
19+
return -1;
20+
} else if (a.isCompleted && b.isCompleted == false) {
21+
return 1;
22+
} else {
23+
return 0;
24+
}
25+
}
26+
27+
}

0 commit comments

Comments
 (0)