From 666f3d68c6ff86f826f856eb23b963db5a005af0 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 13 Nov 2018 01:17:59 +0900 Subject: [PATCH] sort user timeline by date (#3210) --- .../app/desktop/views/pages/deck/deck.user-column.vue | 6 ++++-- src/client/app/desktop/views/pages/user/user.photos.vue | 3 ++- src/client/app/desktop/views/pages/user/user.timeline.vue | 4 ++-- src/client/app/mobile/views/components/user-timeline.vue | 5 +++-- src/client/app/mobile/views/pages/user/home.notes.vue | 3 ++- src/client/app/mobile/views/pages/user/home.photos.vue | 3 ++- src/server/api/endpoints/users/notes.ts | 8 ++++---- 7 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/client/app/desktop/views/pages/deck/deck.user-column.vue b/src/client/app/desktop/views/pages/deck/deck.user-column.vue index 3404280c8..53bb54b5a 100644 --- a/src/client/app/desktop/views/pages/deck/deck.user-column.vue +++ b/src/client/app/desktop/views/pages/deck/deck.user-column.vue @@ -155,7 +155,8 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, fileType: image, - limit: 9 + limit: 9, + untilDate: new Date().getTime() + 1000 * 86400 * 365 }).then(notes => { notes.forEach(note => { note.files.forEach(file => { @@ -254,6 +255,7 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, limit: fetchLimit + 1, + untilDate: new Date().getTime() + 1000 * 86400 * 365, withFiles: this.withFiles, includeMyRenotes: this.$store.state.settings.showMyRenotes, includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes, @@ -274,7 +276,7 @@ export default Vue.extend({ const promise = this.$root.api('users/notes', { userId: this.user.id, limit: fetchLimit + 1, - untilId: (this.$refs.timeline as any).tail().id, + untilDate: new Date((this.$refs.timeline as any).tail().createdAt).getTime(), withFiles: this.withFiles, includeMyRenotes: this.$store.state.settings.showMyRenotes, includeRenotedMyNotes: this.$store.state.settings.showRenotedMyNotes, diff --git a/src/client/app/desktop/views/pages/user/user.photos.vue b/src/client/app/desktop/views/pages/user/user.photos.vue index 4c7589a11..af8623803 100644 --- a/src/client/app/desktop/views/pages/user/user.photos.vue +++ b/src/client/app/desktop/views/pages/user/user.photos.vue @@ -27,7 +27,8 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, withFiles: true, - limit: 9 + limit: 9, + untilDate: new Date().getTime() + 1000 * 86400 * 365 }).then(notes => { notes.forEach(note => { note.files.forEach(file => { diff --git a/src/client/app/desktop/views/pages/user/user.timeline.vue b/src/client/app/desktop/views/pages/user/user.timeline.vue index affa1f11f..9b673a2bf 100644 --- a/src/client/app/desktop/views/pages/user/user.timeline.vue +++ b/src/client/app/desktop/views/pages/user/user.timeline.vue @@ -63,7 +63,7 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, limit: fetchLimit + 1, - untilDate: this.date ? this.date.getTime() : undefined, + untilDate: this.date ? this.date.getTime() : new Date().getTime() + 1000 * 86400 * 365, includeReplies: this.mode == 'with-replies', withFiles: this.mode == 'with-media' }).then(notes => { @@ -86,7 +86,7 @@ export default Vue.extend({ limit: fetchLimit + 1, includeReplies: this.mode == 'with-replies', withFiles: this.mode == 'with-media', - untilId: (this.$refs.timeline as any).tail().id + untilDate: new Date((this.$refs.timeline as any).tail().createdAt).getTime() }); promise.then(notes => { diff --git a/src/client/app/mobile/views/components/user-timeline.vue b/src/client/app/mobile/views/components/user-timeline.vue index 6773b7576..e8d7adc8b 100644 --- a/src/client/app/mobile/views/components/user-timeline.vue +++ b/src/client/app/mobile/views/components/user-timeline.vue @@ -44,7 +44,8 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, withFiles: this.withMedia, - limit: fetchLimit + 1 + limit: fetchLimit + 1, + untilDate: new Date().getTime() + 1000 * 86400 * 365 }).then(notes => { if (notes.length == fetchLimit + 1) { notes.pop(); @@ -66,7 +67,7 @@ export default Vue.extend({ userId: this.user.id, withFiles: this.withMedia, limit: fetchLimit + 1, - untilId: (this.$refs.timeline as any).tail().id + untilDate: new Date((this.$refs.timeline as any).tail().createdAt).getTime() }); promise.then(notes => { diff --git a/src/client/app/mobile/views/pages/user/home.notes.vue b/src/client/app/mobile/views/pages/user/home.notes.vue index d01292b61..fab998a43 100644 --- a/src/client/app/mobile/views/pages/user/home.notes.vue +++ b/src/client/app/mobile/views/pages/user/home.notes.vue @@ -22,7 +22,8 @@ export default Vue.extend({ }, mounted() { this.$root.api('users/notes', { - userId: this.user.id + userId: this.user.id, + untilDate: new Date().getTime() + 1000 * 86400 * 365 }).then(notes => { this.notes = notes; this.fetching = false; diff --git a/src/client/app/mobile/views/pages/user/home.photos.vue b/src/client/app/mobile/views/pages/user/home.photos.vue index e1d9d0470..a1ee378a7 100644 --- a/src/client/app/mobile/views/pages/user/home.photos.vue +++ b/src/client/app/mobile/views/pages/user/home.photos.vue @@ -29,7 +29,8 @@ export default Vue.extend({ this.$root.api('users/notes', { userId: this.user.id, withFiles: true, - limit: 6 + limit: 6, + untilDate: new Date().getTime() + 1000 * 86400 * 365 }).then(notes => { notes.forEach(note => { note.media.forEach(media => { diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts index 65fd880cd..64febdfcf 100644 --- a/src/server/api/endpoints/users/notes.ts +++ b/src/server/api/endpoints/users/notes.ts @@ -153,9 +153,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { } //#region Construct query - const sort = { - _id: -1 - }; + const sort = { } as any; const query = { deletedAt: null, @@ -168,15 +166,17 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => { $gt: ps.sinceId }; } else if (ps.untilId) { + sort._id = -1; query._id = { $lt: ps.untilId }; } else if (ps.sinceDate) { - sort._id = 1; + sort.createdAt = 1; query.createdAt = { $gt: new Date(ps.sinceDate) }; } else if (ps.untilDate) { + sort.createdAt = -1; query.createdAt = { $lt: new Date(ps.untilDate) };