@@ -4,20 +4,18 @@ import {
44 UserCourseSettings ,
55 UsrCrsDataInterface ,
66} from '@db/core' ;
7+
78import moment , { Moment } from 'moment' ;
8- import { getStartAndEndKeys , REVIEW_PREFIX , REVIEW_TIME_FORMAT } from '.' ;
9- import { CourseDB } from './courseDB' ;
10- import { User } from './userDB' ;
9+
10+ import { UserDBInterface } from '@db/core' ;
1111import { logger } from '../../util/logger' ;
1212
1313export class UsrCrsData implements UsrCrsDataInterface {
14- private user : User ;
15- private course : CourseDB ;
14+ private user : UserDBInterface ;
1615 private _courseId : string ;
1716
18- constructor ( user : User , courseId : string ) {
17+ constructor ( user : UserDBInterface , courseId : string ) {
1918 this . user = user ;
20- this . course = new CourseDB ( courseId , async ( ) => this . user ) ;
2119 this . _courseId = courseId ;
2220 }
2321
@@ -47,32 +45,24 @@ export class UsrCrsData implements UsrCrsDataInterface {
4745 }
4846 }
4947 public updateCourseSettings ( updates : UserCourseSetting [ ] ) : void {
50- void this . user . updateCourseSettings ( this . _courseId , updates ) ;
48+ // TODO: Add updateCourseSettings method to UserDBInterface
49+ // For now, we'll need to cast to access the concrete implementation
50+ if ( 'updateCourseSettings' in this . user ) {
51+ void ( this . user as any ) . updateCourseSettings ( this . _courseId , updates ) ;
52+ }
5153 }
5254
5355 private async getReviewstoDate ( targetDate : Moment ) {
54- const keys = getStartAndEndKeys ( REVIEW_PREFIX ) ;
55-
56- const reviews = await this . user . remote ( ) . allDocs < ScheduledCard > ( {
57- startkey : keys . startkey ,
58- endkey : keys . endkey ,
59- include_docs : true ,
60- } ) ;
56+ // Use the interface method instead of direct database access
57+ const allReviews = await this . user . getPendingReviews ( this . _courseId ) ;
6158
6259 logger . debug (
6360 `Fetching ${ this . user . getUsername ( ) } 's scheduled reviews for course ${ this . _courseId } .`
6461 ) ;
65- return reviews . rows
66- . filter ( ( r ) => {
67- if ( r . id . startsWith ( REVIEW_PREFIX ) ) {
68- const date = moment . utc ( r . id . substr ( REVIEW_PREFIX . length ) , REVIEW_TIME_FORMAT ) ;
69- if ( targetDate . isAfter ( date ) ) {
70- if ( this . _courseId === undefined || r . doc ! . courseId === this . _courseId ) {
71- return true ;
72- }
73- }
74- }
75- } )
76- . map ( ( r ) => r . doc ! ) ;
62+
63+ return allReviews . filter ( ( review : ScheduledCard ) => {
64+ const reviewTime = moment . utc ( review . reviewTime ) ;
65+ return targetDate . isAfter ( reviewTime ) ;
66+ } ) ;
7767 }
7868}
0 commit comments