From 20e3132613138b3c7fd0790318ba741daf7a5a47 Mon Sep 17 00:00:00 2001 From: Mo Date: Mon, 15 Apr 2024 17:19:20 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Replace=20comments=20API=20=20(#?= =?UTF-8?q?2772)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 +- client/components/Comment.vue | 31 +- client/components/popup/SubscriptionIO.vue | 1 - client/package.json | 26 +- client/utils/api/comments.ts | 10 +- client/utils/videoplayer/helpers/index.ts | 5 +- package.json | 4 +- pnpm-lock.yaml | 2802 ++++++++++------- server/package.json | 44 +- server/src/common/innertube/innertube.ts | 9 +- .../app/YoutubeGrabberHelper.ts | 4 +- .../src/core/comments/comments.controller.ts | 30 +- server/src/core/comments/comments.mapper.ts | 22 - server/src/core/comments/comments.service.ts | 134 +- server/src/core/comments/dto/comment.dto.ts | 14 - .../comments/dto/comments-response.dto.ts | 6 - .../comments/vt-comments-reply.converter.ts | 8 + .../vt-comments-reply.response.dto.ts | 6 + .../comments/vt-comments-response.dto.ts | 8 + .../comments/vt-comments.converter.ts | 12 + .../comments/vt-comments.extractors.ts | 98 + .../dto/comments/vt-comment-emoji.dto.ts | 7 + .../src/mapper/dto/comments/vt-comment.dto.ts | 23 + .../dto/comments/vt-comments-header.dto.ts | 6 + shared/api.schema.ts | 65 +- shared/package.json | 2 +- testcomment.json | 27 + testcomment.mjs | 33 + tests/cypress/package.json | 4 +- tests/jest/core/core.e2e-spec.ts | 15 +- tests/jest/package.json | 14 +- 31 files changed, 2104 insertions(+), 1376 deletions(-) delete mode 100644 server/src/core/comments/comments.mapper.ts delete mode 100644 server/src/core/comments/dto/comment.dto.ts delete mode 100644 server/src/core/comments/dto/comments-response.dto.ts create mode 100644 server/src/mapper/converter/comments/vt-comments-reply.converter.ts create mode 100644 server/src/mapper/converter/comments/vt-comments-reply.response.dto.ts create mode 100644 server/src/mapper/converter/comments/vt-comments-response.dto.ts create mode 100644 server/src/mapper/converter/comments/vt-comments.converter.ts create mode 100644 server/src/mapper/converter/comments/vt-comments.extractors.ts create mode 100644 server/src/mapper/dto/comments/vt-comment-emoji.dto.ts create mode 100644 server/src/mapper/dto/comments/vt-comment.dto.ts create mode 100644 server/src/mapper/dto/comments/vt-comments-header.dto.ts create mode 100644 testcomment.json create mode 100644 testcomment.mjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 18c3d2128..b9db35ab3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ This file is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.15.4] + +### Fixed + +- Replace comments API [#2772](https://github.com/ViewTube/viewtube/pull/2772) +- Perform search when clicking on autocomplete suggestion (Thanks @frozenduck) [#2770](https://github.com/ViewTube/viewtube/pull/2770) + ## [0.15.3] ### Added @@ -420,7 +427,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Initial release -[unreleased]: https://github.com/viewtube/viewtube/compare/v0.15.3...development +[unreleased]: https://github.com/viewtube/viewtube/compare/v0.15.4...development +[0.15.4]: https://github.com/viewtube/viewtube/compare/v0.15.3...v0.15.4 [0.15.3]: https://github.com/viewtube/viewtube/compare/v0.15.2...v0.15.3 [0.15.2]: https://github.com/viewtube/viewtube/compare/v0.15.1...v0.15.2 [0.15.1]: https://github.com/viewtube/viewtube/compare/v0.15.0...v0.15.1 diff --git a/client/components/Comment.vue b/client/components/Comment.vue index ce24fd90b..fae1d900e 100644 --- a/client/components/Comment.vue +++ b/client/components/Comment.vue @@ -3,7 +3,7 @@ import BadgeButton from '@/components/buttons/BadgeButton.vue'; import { useMessagesStore } from '@/store/messages'; const props = defineProps<{ - comment: ApiDto<'CommentDto'>; + comment: ApiDto<'VTCommentDto'>; channelAuthorName?: string; channelAuthorId?: string; }>(); @@ -12,7 +12,6 @@ const emit = defineEmits<{ (e: 'setTimestamp', timestamp: number): void; }>(); -const route = useRoute(); const messagesStore = useMessagesStore(); const imgProxy = useImgProxy(); const { createTextLinks } = useCreateTextLinks(seconds => { @@ -31,12 +30,11 @@ const hideReplies = () => { const loadReplies = () => { loadingReplies.value = true; - const replyToken = props.comment.replyToken; - const videoId = route.query.v; - getCommentReplies(videoId, replyToken) + const replyContinuation = props.comment.replyContinuation; + getCommentReplies(replyContinuation) .then(response => { replies.value = response.comments; - repliesContinuationString.value = response.continuation; + repliesContinuationString.value = response.continuation ?? null; repliesLoaded.value = true; loadingReplies.value = false; }) @@ -51,8 +49,7 @@ const loadReplies = () => { }; const loadMoreReplies = () => { repliesContinuationLoading.value = true; - const videoId = route.query.v; - getCommentReplies(videoId, repliesContinuationString.value) + getCommentReplies(repliesContinuationString.value) .then(response => { replies.value = replies.value.concat(response.comments); repliesContinuationString.value = response.continuation ?? null; @@ -70,26 +67,26 @@ const loadMoreReplies = () => {