Line data Source code
1 : import 'package:fast_immutable_collections/fast_immutable_collections.dart';
2 : import 'package:freezed_annotation/freezed_annotation.dart';
3 : import 'package:redfire/types.dart';
4 :
5 : import 'adventures/models/adventures_state.dart';
6 : import 'challenges/models/challenges_state.dart';
7 : import 'steps/models/steps_state.dart';
8 : import 'tasks/models/tasks_state.dart';
9 :
10 : part 'app_state.freezed.dart';
11 : part 'app_state.g.dart';
12 :
13 : @freezed
14 : class AppState with _$AppState, RedFireState {
15 : factory AppState({
16 : /// RedFire AppState members
17 : required AuthState auth,
18 : @PageDataConverter() required IList<PageData> pages,
19 : required IList<ProblemInfo> problems,
20 : required Settings settings,
21 : ProfileData? profile,
22 :
23 : /// Additional AppState members
24 : required AdventuresState adventures,
25 : required ChallengesState challenges,
26 : required TasksState tasks,
27 : required StepsState steps,
28 : }) = _AppState;
29 :
30 10 : factory AppState.init() => AppState(
31 : /// RedFire init code
32 5 : auth: AuthState.init(),
33 10 : pages: <PageData>[const InitialPageData()].lock,
34 5 : problems: IList(),
35 5 : settings: Settings.init(),
36 :
37 : /// Additional init code
38 5 : adventures: AdventuresState.init(),
39 5 : challenges: ChallengesState.init(),
40 5 : tasks: TasksState.init(),
41 5 : steps: StepsState.init(),
42 : );
43 :
44 0 : factory AppState.fromJson(JsonMap json) => _$AppStateFromJson(json);
45 : }
|