getUserNotes method

Future<List<UserNoteModel>> getUserNotes({
  1. String? topicId,
  2. String? search,
  3. int limit = 50,
})

Implementation

Future<List<UserNoteModel>> getUserNotes({
  String? topicId,
  String? search,
  int limit = 50,
}) async {
  final userId = _client.auth.currentUser?.id;
  if (userId == null) return [];

  var query = _client.from('user_notes').select().eq('user_id', userId);

  if (topicId != null) {
    query = query.eq('topic_id', topicId);
  }
  if (search != null && search.isNotEmpty) {
    final sanitized = _sanitizeSearchQuery(search);
    if (sanitized.isNotEmpty) {
      query = query.textSearch('fts', sanitized);
    }
  }

  final response = await query
      .order('is_pinned', ascending: false)
      .order('updated_at', ascending: false)
      .limit(limit);
  return (response as List<dynamic>)
      .map((row) => UserNoteModel.fromJson(row as Map<String, dynamic>))
      .toList();
}