refactor: rewrite Comments Section logic (#88)

* feat: add core comments section classes

* chore: update type declarations

* chore: fix linter warnings

* style: fix linter

* chore: update tests

* chore(tests): fix typo

* chore(tests): fix typo x2

* fix(tests): `getReplies()` method is only present in `CommentThread` and not `Comment`

* chore(tests): fix comment id path

* chore(tests): remove outdated code

* chore(tests): fix results path

* chore: enforce code style

* chore: update type declarations

* docs: add examples and documentation

* chore(docs): fix paths

* chore(docs): fix more paths

* chore(docs): fix `Comments.js` path

* chore(docs): fix typo

* chore(docs): mention example file

* chore(examples): fix imports

* chore(examples): fix typo
This commit is contained in:
LuanRT
2022-07-02 19:55:33 -03:00
committed by GitHub
parent 0a851bde31
commit 1d62e469a9
291 changed files with 2774 additions and 1831 deletions

View File

@@ -0,0 +1,25 @@
'use strict';
class AuthorCommentBadge {
type = 'AuthorCommentBadge';
#data;
constructor(data) {
this.icon_type = data.icon.iconType;
this.tooltip = data.iconTooltip;
// *** For consistency
this.tooltip === 'Verified' &&
(this.style = 'BADGE_STYLE_TYPE_VERIFIED') &&
(data.style = 'BADGE_STYLE_TYPE_VERIFIED');
this.#data = data;
}
get orig_badge() {
return this.#data;
}
}
module.exports = AuthorCommentBadge;

View File

@@ -0,0 +1,15 @@
'use strict';
const Parser = require('../..');
class CommentActionButtons {
type = 'CommentActionButtons';
constructor(data) {
this.like_button = Parser.parse(data.likeButton);
this.dislike_button = Parser.parse(data.dislikeButton);
this.reply_button = Parser.parse(data.replyButton);
}
}
module.exports = CommentActionButtons;

View File

@@ -0,0 +1,15 @@
'use strict';
const Parser = require('../..');
class CommentReplies {
type = 'CommentReplies';
constructor(data) {
this.contents = Parser.parse(data.contents);
this.view_replies = Parser.parse(data.viewReplies);
this.hide_replies = Parser.parse(data.hideReplies);
}
}
module.exports = CommentReplies;

View File

@@ -0,0 +1,19 @@
'use strict';
const Parser = require('../..');
const Thumbnail = require('../Thumbnail');
const Text = require('../Text');
class CommentSimplebox {
type = 'CommentSimplebox';
constructor(data) {
this.submit_button = Parser.parse(data.submitButton);
this.cancel_button = Parser.parse(data.cancelButton);
this.author_thumbnails = Thumbnail.fromResponse(data.authorThumbnail);
this.placeholder = new Text(data.placeholderText);
this.avatar_size = data.avatarSize;
}
}
module.exports = CommentSimplebox;