11import  'dart:async' ;
22import  'package:flutter/foundation.dart' ;
3+ import  'package:mynoteapp/extensions/list/filter.dart' ;
34import  'package:mynoteapp/services/crud/crud_exceptions.dart' ;
45import  'package:sqflite/sqflite.dart' ;
56import  'package:path_provider/path_provider.dart' 
@@ -10,10 +11,12 @@ class NotesService {
1011  Database ?  _db;
1112  List <DatabaseNote > _notes =  [];
1213
14+   DatabaseUser ?  _user;
15+ 
1316  static  final  NotesService  _shared =  NotesService ._sharedInstance ();
1417  NotesService ._sharedInstance () {
1518    _notesStreamController =  StreamController <List <DatabaseNote >>.broadcast (
16-       onListen: () {
19+       onListen:   () {
1720        _notesStreamController.sink.add (_notes);
1821      },
1922    );
@@ -23,15 +26,30 @@ class NotesService {
2326
2427  late  final  StreamController <List <DatabaseNote >> _notesStreamController;
2528
26-   Stream <List <DatabaseNote >> get  allNotes =>  _notesStreamController.stream;
29+   Stream <List <DatabaseNote >> get  allNotes =>  _notesStreamController.stream.filter ((note) {
30+     final  currentUser =  _user;
31+     if  (currentUser !=  null ) {
32+       return  note.userId ==  currentUser.id;
33+     } else  {
34+       throw  UserShouldBeSetBeforeReadingAllNotesException ();
35+     }
36+   });
2737
28-   Future <DatabaseUser > getOrCreateUser ({required  String  email}) async  {
38+   Future <DatabaseUser > getOrCreateUser ({
39+     required  String  email,
40+     bool  setAsCurrentUser =  true ,
41+   }) async  {
2942    try  {
3043      final  user =  await  getUser (email:  email);
44+       if  (setAsCurrentUser) {
45+         _user =  user;
46+       }
3147      return  user;
3248    } on  CouldNotFindUserException  {
3349      final  createdUser =  await  createUser (email:  email);
34- 
50+       if  (setAsCurrentUser) {
51+         _user =  createdUser;
52+       }
3553      return  createdUser;
3654    } catch  (e) {
3755      rethrow ;
@@ -55,10 +73,12 @@ class NotesService {
5573
5674    await  getNote (id:  note.id); // not yoksa exception döndürsün 
5775
58-     final  updatesCount =  await  db.update (noteTable, {
59-       textColumn:  text,
60-       isSyncedWithCloudColumn:  0 ,
61-     });
76+     final  updatesCount =  await  db.update (
77+       noteTable,
78+       {textColumn:  text, isSyncedWithCloudColumn:  0 },
79+       where:  'id = ?' ,
80+       whereArgs:  [note.id],
81+     );
6282
6383    if  (updatesCount ==  0 ) {
6484      throw  CouldNotUpdateNoteException ();
0 commit comments