feat(todo): filters in Todoist's language, and a view of each label (ADR 0033, D35)
A filter is a query read on the device, as the server sees no task, kept sealed in `saved_filter`. Filters & labels is a screen of its own under Browse; a label opens its tasks, and favourite filters and labels join Browse's Favourites. D36 records what of Todoist's Pro stays out. Whats-New: Filters: keep views like "today & p1", and open a label to see its tasks, under Browse in Filters & labels. Whats-New-De: Filter: Speichere Ansichten wie „heute & p1“ und öffne ein Label, um seine Aufgaben zu sehen, in der Übersicht unter Filter & Labels. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
a4c1fe298d
commit
b1f2078357
1 changed files with 21688 additions and 71 deletions
|
|
@ -5,6 +5,8 @@ import 'package:clock/clock.dart';
|
|||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:halkyon_app/halkyon_app.dart';
|
||||
import 'package:halkyon_todo_flutter/src/core/privacy/todo_keys.dart';
|
||||
import 'package:halkyon_todo_flutter/src/feature/filter/data/filter_repository.dart';
|
||||
import 'package:halkyon_todo_flutter/src/feature/filter/model/saved_filter.dart';
|
||||
import 'package:halkyon_todo_flutter/src/feature/label/data/label_repository.dart';
|
||||
import 'package:halkyon_todo_flutter/src/feature/label/model/label.dart';
|
||||
import 'package:halkyon_todo_flutter/src/feature/section/data/section_repository.dart';
|
||||
|
|
@ -501,5 +503,18 @@ void main() {
|
|||
LabelRepository(rows, await keysOf(null)).add(label),
|
||||
throwsA(isA<KeysMissing>()),
|
||||
);
|
||||
|
||||
final filters = FilterRepository(rows, await keysOf(alice));
|
||||
const filter = FilterContent(name: 'Urgent', query: 'p1');
|
||||
await filters.add(filter);
|
||||
expect((await filters.all()).last.content, filter);
|
||||
expect(
|
||||
(await FilterRepository(rows, await keysOf(bob)).all()).last.content,
|
||||
isNull,
|
||||
);
|
||||
await expectLater(
|
||||
FilterRepository(rows, await keysOf(null)).add(filter),
|
||||
throwsA(isA<KeysMissing>()),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue