finished notes page
This commit is contained in:
53
filcnaplo/lib/api/providers/self_note_provider.dart
Normal file
53
filcnaplo/lib/api/providers/self_note_provider.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
import 'package:filcnaplo/api/providers/user_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/database_provider.dart';
|
||||
import 'package:filcnaplo/models/self_note.dart';
|
||||
import 'package:filcnaplo/models/user.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class SelfNoteProvider with ChangeNotifier {
|
||||
late List<SelfNote> _notes;
|
||||
late BuildContext _context;
|
||||
List<SelfNote> get notes => _notes;
|
||||
|
||||
SelfNoteProvider({
|
||||
List<SelfNote> initialNotes = const [],
|
||||
required BuildContext context,
|
||||
}) {
|
||||
_notes = List.castFrom(initialNotes);
|
||||
_context = context;
|
||||
|
||||
if (_notes.isEmpty) restore();
|
||||
}
|
||||
|
||||
// restore self notes from db
|
||||
Future<void> restore() async {
|
||||
String? userId = Provider.of<UserProvider>(_context, listen: false).id;
|
||||
|
||||
// load self notes from db
|
||||
if (userId != null) {
|
||||
var dbNotes = await Provider.of<DatabaseProvider>(_context, listen: false)
|
||||
.userQuery
|
||||
.getSelfNotes(userId: userId);
|
||||
_notes = dbNotes;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
// fetches fresh data from api (not needed, cuz no api for that)
|
||||
// Future<void> fetch() async {
|
||||
// }
|
||||
|
||||
// store self notes in db
|
||||
Future<void> store(List<SelfNote> notes) async {
|
||||
User? user = Provider.of<UserProvider>(_context, listen: false).user;
|
||||
if (user == null) throw "Cannot store Self Notes for User null";
|
||||
String userId = user.id;
|
||||
|
||||
await Provider.of<DatabaseProvider>(_context, listen: false)
|
||||
.userStore
|
||||
.storeSelfNotes(notes, userId: userId);
|
||||
_notes = notes;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import 'package:filcnaplo/api/providers/ad_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/live_card_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/news_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/database_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/self_note_provider.dart';
|
||||
import 'package:filcnaplo/api/providers/status_provider.dart';
|
||||
import 'package:filcnaplo/models/config.dart';
|
||||
import 'package:filcnaplo/theme/observer.dart';
|
||||
@@ -158,22 +159,25 @@ class App extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider<LiveCardProvider>(
|
||||
create: (context) => LiveCardProvider(
|
||||
create: (_) => LiveCardProvider(
|
||||
timetable: timetable,
|
||||
settings: settings,
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider<GoalProvider>(
|
||||
create: (context) => GoalProvider(
|
||||
create: (_) => GoalProvider(
|
||||
database: database,
|
||||
user: user,
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider<ShareProvider>(
|
||||
create: (context) => ShareProvider(
|
||||
create: (_) => ShareProvider(
|
||||
user: user,
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider<SelfNoteProvider>(
|
||||
create: (context) => SelfNoteProvider(context: context),
|
||||
),
|
||||
],
|
||||
child: Consumer<ThemeModeObserver>(
|
||||
builder: (context, themeMode, child) {
|
||||
|
||||
@@ -187,9 +187,9 @@ class UserDatabaseStore {
|
||||
where: "id = ?", whereArgs: [userId]);
|
||||
}
|
||||
|
||||
Future<void> storeSelfNotes(List<SelfNote> absences,
|
||||
Future<void> storeSelfNotes(List<SelfNote> selfNotes,
|
||||
{required String userId}) async {
|
||||
String selfNotesJson = jsonEncode(absences.map((e) => e.json).toList());
|
||||
String selfNotesJson = jsonEncode(selfNotes.map((e) => e.json).toList());
|
||||
await db.update("user_data", {"self_notes": selfNotesJson},
|
||||
where: "id = ?", whereArgs: [userId]);
|
||||
}
|
||||
|
||||
@@ -19,4 +19,10 @@ class SelfNote {
|
||||
json: json,
|
||||
);
|
||||
}
|
||||
|
||||
get toJson => {
|
||||
'id': id,
|
||||
'title': title,
|
||||
'content': content,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user