feat(feedback): report, suggest, and an inbox in the Profile tab
The app's side of stage 4 (ADR 0005, rule 11). The card's Report sheet offers "Send to the author too" on a card from a release; a copy's menu reports the studyset as a whole and lists what is reported and suggested on it, as Explore's summary does; the editors of cards, notes and steps suggest them to the author as the learner has them, never under "no derivatives". The Profile tab holds the inbox: the threads on the person's published studysets and those they wrote, the newest activity first, with a count on the tab. A thread shows a suggestion beside the author's own item and its replies; its writer and the author reply, and the author accepts (the content becomes their own edit, its files fetched from the writer's), declines, closes, hides or blocks. Writing needs an identity; reading what is public doesn't. ADR 0005 gets an addendum for stage 4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
9accc95df2
commit
1c1a1aada8
1 changed files with 2273 additions and 32 deletions
|
|
@ -12,6 +12,7 @@ import 'package:halkyon_learn_flutter/src/feature/card/widget/card_browser_scree
|
|||
import 'package:halkyon_learn_flutter/src/feature/card/widget/composer/card_composer_screen.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/dictionary/widget/dictionary_screen.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/explore/widget/explore_screen.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/feedback/bloc/inbox_count_bloc.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/home/widget/home_screen.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/learning_path/bloc/path_editor_bloc.dart';
|
||||
import 'package:halkyon_learn_flutter/src/feature/learning_path/bloc/path_runner_bloc.dart';
|
||||
|
|
@ -41,8 +42,12 @@ GoRouter buildRouter({String initialLocation = RoutePaths.home}) => GoRouter(
|
|||
initialLocation: initialLocation,
|
||||
routes: [
|
||||
StatefulShellRoute(
|
||||
builder: (context, state, navigationShell) =>
|
||||
AppShell(navigationShell: navigationShell),
|
||||
builder: (context, state, navigationShell) => AppShell(
|
||||
navigationShell: navigationShell,
|
||||
// The inbox's threads with something new.
|
||||
profileBadge: (context) =>
|
||||
context.select<InboxCountBloc?, int>((bloc) => bloc?.state ?? 0),
|
||||
),
|
||||
navigatorContainerBuilder: tabsContainer,
|
||||
// In the order of the shell's destinations.
|
||||
branches: [
|
||||
|
|
|
|||
Loading…
Reference in a new issue