@@ -66,6 +66,10 @@ const { result, fetchMore } = useQuery(GET_COURSE_REL_USER, {
66
66
after: null ,
67
67
})
68
68
69
+ const sortCourses = () => {
70
+ courses .value .sort ((a , b ) => a .title .localeCompare (b .title , undefined , { numeric: true , sensitivity: " base" }))
71
+ }
72
+
69
73
watch (result, (newResult ) => {
70
74
if (newResult? .courseRelUsers ) {
71
75
const newCourses = newResult .courseRelUsers .edges .map (({ node }) => node .course )
@@ -74,12 +78,17 @@ watch(result, (newResult) => {
74
78
(newCourse ) => ! courses .value .some ((existingCourse ) => existingCourse ._id === newCourse ._id ),
75
79
)
76
80
77
- courses .value .push (... filteredCourses)
81
+ if (filteredCourses .length > 0 ) {
82
+ courses .value .push (... filteredCourses)
83
+ sortCourses ()
84
+ }
85
+
78
86
endCursor .value = newResult .courseRelUsers .pageInfo .endCursor
79
87
hasMore .value = newResult .courseRelUsers .pageInfo .hasNextPage
80
88
81
89
nextTick (() => {
82
90
if (lastCourseRef .value ) {
91
+ observer .unobserve (lastCourseRef .value )
83
92
observer .observe (lastCourseRef .value )
84
93
}
85
94
})
@@ -92,34 +101,37 @@ const loadMoreCourses = () => {
92
101
if (! hasMore .value || isLoading .value ) return
93
102
isLoading .value = true
94
103
95
- fetchMore ({
96
- variables: {
97
- user: securityStore .user [" @id" ],
98
- first: 10 ,
99
- after: endCursor .value ,
100
- },
101
- updateQuery : (previousResult , { fetchMoreResult }) => {
102
- if (! fetchMoreResult) return previousResult
103
-
104
- const newCourses = fetchMoreResult .courseRelUsers .edges .map (({ node }) => node .course )
105
- const filteredCourses = newCourses .filter (
106
- (newCourse ) => ! courses .value .some ((existingCourse ) => existingCourse ._id === newCourse ._id ),
107
- )
108
- courses .value .push (... filteredCourses)
109
- endCursor .value = fetchMoreResult .courseRelUsers .pageInfo .endCursor
110
- hasMore .value = fetchMoreResult .courseRelUsers .pageInfo .hasNextPage
111
-
112
- return {
113
- ... previousResult,
114
- courseRelUsers: {
115
- ... fetchMoreResult .courseRelUsers ,
116
- edges: [... previousResult .courseRelUsers .edges , ... fetchMoreResult .courseRelUsers .edges ],
117
- },
118
- }
119
- },
120
- }).finally (() => {
121
- isLoading .value = false
122
- })
104
+ setTimeout (() => {
105
+ fetchMore ({
106
+ variables: {
107
+ user: securityStore .user [" @id" ],
108
+ first: 10 ,
109
+ after: endCursor .value ,
110
+ },
111
+ updateQuery : (previousResult , { fetchMoreResult }) => {
112
+ if (! fetchMoreResult) return previousResult
113
+
114
+ const newCourses = fetchMoreResult .courseRelUsers .edges .map (({ node }) => node .course )
115
+ const filteredCourses = newCourses .filter (
116
+ (newCourse ) => ! courses .value .some ((existingCourse ) => existingCourse ._id === newCourse ._id ),
117
+ )
118
+ courses .value .push (... filteredCourses)
119
+ sortCourses (courses .value )
120
+ endCursor .value = fetchMoreResult .courseRelUsers .pageInfo .endCursor
121
+ hasMore .value = fetchMoreResult .courseRelUsers .pageInfo .hasNextPage
122
+
123
+ return {
124
+ ... previousResult,
125
+ courseRelUsers: {
126
+ ... fetchMoreResult .courseRelUsers ,
127
+ edges: [... previousResult .courseRelUsers .edges , ... fetchMoreResult .courseRelUsers .edges ],
128
+ },
129
+ }
130
+ },
131
+ }).finally (() => {
132
+ isLoading .value = false
133
+ })
134
+ }, 300 )
123
135
}
124
136
125
137
let observer = new IntersectionObserver (
0 commit comments