Skip to content

Commit 732d2a5

Browse files
committed
feat: add functionality to retrieve poems from the bin and update ReaderScreen for bin context
1 parent ad25844 commit 732d2a5

File tree

5 files changed

+31
-21
lines changed

5 files changed

+31
-21
lines changed

lib/database/database.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ class Database extends _$Database {
8888
..orderBy([(u) => OrderingTerm.desc(u.deletedAt)]))
8989
.watch();
9090

91+
Future<List<PoemModel>> getBinPoems() =>
92+
(select(poem)..where((tbl) => tbl.deletedAt.isNotNull())).get();
93+
9194
Future<List<PoemModel>> getPoems() =>
9295
(select(poem)
9396
..where((tbl) => tbl.deletedAt.isNull())

lib/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter/foundation.dart';
12
import 'package:flutter/material.dart';
23
import 'package:flutter/services.dart';
34
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -35,6 +36,7 @@ Future<void> main() async {
3536
options.replay.sessionSampleRate = 0.1;
3637
options.replay.onErrorSampleRate = 1.0;
3738
options.autoInitializeNativeSdk = true;
39+
options.debug = kDebugMode;
3840
},
3941
appRunner: () =>
4042
runApp(SentryWidget(child: const ProviderScope(child: MyApp()))),

lib/screens/bin_screen/bin_screen.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,9 @@ class _CBody extends ConsumerWidget {
228228
Navigator.push<void>(
229229
context,
230230
MaterialPageRoute(
231-
builder: (_) => ReaderScreen(model: poem),
231+
builder: (_) {
232+
return ReaderScreen(model: poem, isFromBin: true);
233+
},
232234
),
233235
);
234236
},

lib/screens/reader_screen/reader_screen.dart

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import '../../widgets/share_option_list.dart';
99
import '../writing_screen/writing_screen.dart';
1010

1111
class ReaderScreen extends StatelessWidget {
12-
const ReaderScreen({super.key, required this.model});
12+
const ReaderScreen({super.key, required this.model, this.isFromBin = false});
1313

1414
final PoemModel model;
15+
final bool isFromBin;
1516

1617
@override
1718
Widget build(BuildContext context) {
@@ -38,17 +39,21 @@ class ReaderScreen extends StatelessWidget {
3839
icon: const Icon(Icons.arrow_back_ios_rounded),
3940
onPressed: () => Navigator.pop(context),
4041
),
41-
IconButton(
42-
icon: const Icon(Icons.edit),
43-
onPressed: () => Navigator.pushReplacement<void, void>(
44-
context,
45-
MaterialPageRoute(builder: (_) => WritingScreen(model: model)),
42+
if (!isFromBin) ...[
43+
IconButton(
44+
icon: const Icon(Icons.edit),
45+
onPressed: () => Navigator.pushReplacement<void, void>(
46+
context,
47+
MaterialPageRoute(
48+
builder: (_) => WritingScreen(model: model),
49+
),
50+
),
4651
),
47-
),
48-
IconButton(
49-
onPressed: () => _showShareBottomSheet(context),
50-
icon: const Icon(Icons.share),
51-
),
52+
IconButton(
53+
onPressed: () => _showShareBottomSheet(context),
54+
icon: const Icon(Icons.share),
55+
),
56+
],
5257
],
5358
),
5459
),

lib/utils/workmanager_helper.dart

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,14 @@ void callbackDispatcher() {
3737
}
3838

3939
final container = ProviderContainer();
40-
print('Workmanager executing task: $task');
4140

4241
if (task == _deleteBinTask) {
4342
final db = locator<Database>();
44-
final rows = await db.deleteBinAfter30Days();
43+
await db.deleteBinAfter30Days();
4544

46-
print('Deleted $rows rows from bin');
47-
48-
if (rows == 0) {
49-
print('No more rows in bin, unregistering delete bin task');
45+
// Unregister if bin is empty
46+
final rows = await db.getBinPoems();
47+
if (rows.isEmpty) {
5048
unregisterDeleteBinWorkmanager();
5149
}
5250

@@ -120,11 +118,11 @@ void unregisterBackupWorkmanager() {
120118
Workmanager().cancelByUniqueName(_backupName);
121119
}
122120

123-
void registerDeleteBinWorkmanager() {
124-
Workmanager().registerPeriodicTask(
121+
Future<void> registerDeleteBinWorkmanager() async {
122+
await Workmanager().registerPeriodicTask(
125123
_deleteBinName,
126124
_deleteBinTask,
127-
frequency: const Duration(seconds: 10),
125+
frequency: const Duration(days: 1),
128126
constraints: Constraints(
129127
requiresBatteryNotLow: true,
130128
networkType: NetworkType.notRequired,

0 commit comments

Comments
 (0)