From cd39e871900eadd70bf7cf13022c8094315234c6 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 22:52:46 -0400 Subject: [PATCH 1/9] Create TypeScript file --- src/posts/create.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/posts/create.ts diff --git a/src/posts/create.ts b/src/posts/create.ts new file mode 100644 index 0000000000..e69de29bb2 From 0fd5a07abcf1f5ecc7de3e325785c9518188fca5 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 22:54:12 -0400 Subject: [PATCH 2/9] Define interfaces for data structures --- src/posts/create.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/posts/create.ts b/src/posts/create.ts index e69de29bb2..54f3551a09 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -0,0 +1,34 @@ +import _ = require('lodash'); +import meta = require('../meta'); +import db = require('../database'); +import plugins = require('../plugins'); +import user = require('../user'); +import topics = require('../topics'); +import categories = require('../categories'); +import groups = require('../groups'); +import privileges = require('../privileges'); + +interface PostData { + uid: number; + tid: number; + content: string; + timestamp?: number; + isMain?: boolean; + toPid?: number; + ip?: string; + handle?: string; +} + +interface Post { + pid: number; + uid: number; + tid: number; + content: string; + timestamp: number; + toPid?: number; + ip?: string; + handle?: string; + cid?: number; + isMain?: boolean; + deleted?: boolean; +} \ No newline at end of file From 623150522422d39ad98d67be640b23a93e673eec Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 22:55:28 -0400 Subject: [PATCH 3/9] Update import statements to ES6 syntax --- src/posts/create.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/posts/create.ts b/src/posts/create.ts index 54f3551a09..f8a37fe78f 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -1,12 +1,13 @@ -import _ = require('lodash'); -import meta = require('../meta'); -import db = require('../database'); -import plugins = require('../plugins'); -import user = require('../user'); -import topics = require('../topics'); -import categories = require('../categories'); -import groups = require('../groups'); -import privileges = require('../privileges'); +import _ from 'lodash'; +import meta from '../meta'; +import db from '../database'; +import plugins from '../plugins'; +import user from '../user'; +import topics from '../topics'; +import categories from '../categories'; +import groups from '../groups'; +import privileges from '../privileges'; + interface PostData { uid: number; From a7b7dafd8bf1f1d4cc7372b0979d03278b2ea2c5 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 22:57:58 -0400 Subject: [PATCH 4/9] Fix linter errors in create function --- src/posts/create.ts | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/posts/create.ts b/src/posts/create.ts index f8a37fe78f..e99c8ab89d 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -32,4 +32,36 @@ interface Post { cid?: number; isMain?: boolean; deleted?: boolean; +} + +function createPosts(Posts: Post) { + async function checkToPid(toPid: number, uid: number): Promise { + const [toPost, canViewToPid] = await Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + Posts.getPostFields(toPid, ['pid', 'deleted']), + privileges.posts.can('posts:view_deleted', toPid, uid), + ]) as [Post, boolean]; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + const toPidExists = !!toPost.pid; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (!toPidExists || (toPost.deleted && !canViewToPid)) { + throw new Error('[[error:invalid-pid]]'); + } + } + async function addReplyTo(postData: Post, timestamp: number): Promise { + if (!postData.toPid) { + return; + } + await Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.sortedSetAdd(`pid:${postData.toPid}:replies`, timestamp, postData.pid), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.incrObjectField(`post:${postData.toPid}`, 'replies'), + ]); + } } \ No newline at end of file From 2fed82f54aed03651d1b1b6d1a8beb10fd9e9aec Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 23:04:13 -0400 Subject: [PATCH 5/9] Handle result type and fix linting errors related to types --- src/posts/create.ts | 86 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/src/posts/create.ts b/src/posts/create.ts index e99c8ab89d..da6db3b486 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -64,4 +64,90 @@ function createPosts(Posts: Post) { db.incrObjectField(`post:${postData.toPid}`, 'replies'), ]); } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + Posts.create = async function (data: PostData): Promise { + // This is an internal method, consider using Topics.reply instead + const { uid, tid, content, timestamp = Date.now(), isMain = false } = data; + if (!uid && parseInt(uid.toString(), 10) !== 0) { + throw new Error('[[error:invalid-uid]]'); + } + + if (data.toPid) { + await checkToPid(data.toPid, uid); + } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + const pid: number = await db.incrObjectField('global', 'nextPid') as number; + let postData: Post = { + pid: pid, + uid: uid, + tid: tid, + content: content.toString(), + timestamp: timestamp, + }; + + if (data.toPid) { + postData.toPid = data.toPid; + } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (data.ip && meta.config.trackIpPerPost) { + postData.ip = data.ip; + } + if (data.handle && !parseInt(uid.toString(), 10)) { + postData.handle = data.handle; + } + + let result: { post: Post } = await plugins.hooks.fire('filter:post.create', { post: postData, data: data }) as { post: Post }; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + postData = result.post; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + await db.setObject(`post:${postData.pid}`, postData); + + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + const topicData = await topics.getTopicFields(tid, ['cid', 'pinned']) as { cid: number; pinned: boolean }; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + postData.cid = topicData.cid; + + await Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.sortedSetAdd('posts:pid', timestamp, postData.pid), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.incrObjectField('global', 'postCount'), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + user.onNewPostMade(postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + topics.onNewPostMade(postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + categories.onNewPostMade(topicData.cid, topicData.pinned, postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + groups.onNewPostMade(postData), + addReplyTo(postData, timestamp), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + Posts.uploads.sync(postData.pid), + ]); + + result = await plugins.hooks.fire('filter:post.get', { post: postData, uid: data.uid }) as { post: Post }; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + result.post.isMain = isMain; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + await plugins.hooks.fire('action:post.save', { post: _.clone(result.post) }); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return result.post; + }; } \ No newline at end of file From 3d199aeac4256bda82fc09739ab06f3e5c065fba Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 23:05:22 -0400 Subject: [PATCH 6/9] Export createPosts function using CommonJS --- src/posts/create.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/posts/create.ts b/src/posts/create.ts index da6db3b486..12202e24b2 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -150,4 +150,6 @@ function createPosts(Posts: Post) { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access return result.post; }; -} \ No newline at end of file +} + +module.exports = createPosts; From ff37ae80073d23355c2313bf50427425e1009895 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 23:06:05 -0400 Subject: [PATCH 7/9] Update import statements to ES6 syntax --- src/posts/create.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/posts/create.ts b/src/posts/create.ts index 12202e24b2..3585c73af1 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -1,12 +1,12 @@ -import _ from 'lodash'; -import meta from '../meta'; -import db from '../database'; -import plugins from '../plugins'; -import user from '../user'; -import topics from '../topics'; -import categories from '../categories'; -import groups from '../groups'; -import privileges from '../privileges'; +import _ = require('lodash'); +import meta = require('../meta'); +import db = require('../database'); +import plugins = require('../plugins'); +import user = require('../user'); +import topics = require('../topics'); +import categories = require('../categories'); +import groups = require('../groups'); +import privileges = require('../privileges'); interface PostData { From feff562261b9a1ac48a3d2d9bcf192ea872c1383 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 23:07:20 -0400 Subject: [PATCH 8/9] Fix linter errors and docs interfaces --- src/posts/create.ts | 51 ++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/posts/create.ts b/src/posts/create.ts index 3585c73af1..f38b2faec6 100644 --- a/src/posts/create.ts +++ b/src/posts/create.ts @@ -8,32 +8,41 @@ import categories = require('../categories'); import groups = require('../groups'); import privileges = require('../privileges'); - +/** + * Data required to create a post. + */ interface PostData { - uid: number; - tid: number; - content: string; - timestamp?: number; - isMain?: boolean; - toPid?: number; - ip?: string; - handle?: string; + uid: number; // User ID of the post author + tid: number; // Topic ID where the post will be created + content: string; // Content of the post + timestamp?: number; // Timestamp of when the post was created (optional) + isMain?: boolean; // Indicates if the post is the main post in the topic (optional) + toPid?: number; // Parent post ID if this post is a reply (optional) + ip?: string; // IP address of the post author (optional) + handle?: string; // Handle or username of the post author (optional) } +/** + * Represents a post. + */ interface Post { - pid: number; - uid: number; - tid: number; - content: string; - timestamp: number; - toPid?: number; - ip?: string; - handle?: string; - cid?: number; - isMain?: boolean; - deleted?: boolean; + pid: number; // Post ID + uid: number; // User ID of the post author + tid: number; // Topic ID where the post is located + content: string; // Content of the post + timestamp: number; // Timestamp of when the post was created + toPid?: number; // Parent post ID if this post is a reply (optional) + ip?: string; // IP address of the post author (optional) + handle?: string; // Handle or username of the post author (optional) + cid?: number; // Category ID where the post is located (optional) + isMain?: boolean; // Indicates if the post is the main post in the topic (optional) + deleted?: boolean; // Indicates if the post is deleted (optional) + getPostFields?(pid: number, fields: string[]): Promise; // Retrieves specific fields of a post (optional) + create?(data: PostData): Promise; // Creates a new post (optional) + uploads?: { + sync(pid: number): void; // Synchronizes uploads for a specific post (optional) + }; } - function createPosts(Posts: Post) { async function checkToPid(toPid: number, uid: number): Promise { const [toPost, canViewToPid] = await Promise.all([ From 26dd60ea96df6f4363ef724bac7dce0fda525f15 Mon Sep 17 00:00:00 2001 From: Jeam <19-10234@usb.ve> Date: Sun, 13 Oct 2024 23:24:47 -0400 Subject: [PATCH 9/9] Includes compiled create.js file --- src/posts/create.js | 230 ++++++++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 93 deletions(-) diff --git a/src/posts/create.js b/src/posts/create.js index d541564c2e..224441c8df 100644 --- a/src/posts/create.js +++ b/src/posts/create.js @@ -1,94 +1,138 @@ -'use strict'; - -const _ = require('lodash'); - -const meta = require('../meta'); -const db = require('../database'); -const plugins = require('../plugins'); -const user = require('../user'); -const topics = require('../topics'); -const categories = require('../categories'); -const groups = require('../groups'); -const privileges = require('../privileges'); - -module.exports = function (Posts) { - Posts.create = async function (data) { - // This is an internal method, consider using Topics.reply instead - const { uid } = data; - const { tid } = data; - const content = data.content.toString(); - const timestamp = data.timestamp || Date.now(); - const isMain = data.isMain || false; - - if (!uid && parseInt(uid, 10) !== 0) { - throw new Error('[[error:invalid-uid]]'); - } - - if (data.toPid) { - await checkToPid(data.toPid, uid); - } - - const pid = await db.incrObjectField('global', 'nextPid'); - let postData = { - pid: pid, - uid: uid, - tid: tid, - content: content, - timestamp: timestamp, - }; - - if (data.toPid) { - postData.toPid = data.toPid; - } - if (data.ip && meta.config.trackIpPerPost) { - postData.ip = data.ip; - } - if (data.handle && !parseInt(uid, 10)) { - postData.handle = data.handle; - } - - let result = await plugins.hooks.fire('filter:post.create', { post: postData, data: data }); - postData = result.post; - await db.setObject(`post:${postData.pid}`, postData); - - const topicData = await topics.getTopicFields(tid, ['cid', 'pinned']); - postData.cid = topicData.cid; - - await Promise.all([ - db.sortedSetAdd('posts:pid', timestamp, postData.pid), - db.incrObjectField('global', 'postCount'), - user.onNewPostMade(postData), - topics.onNewPostMade(postData), - categories.onNewPostMade(topicData.cid, topicData.pinned, postData), - groups.onNewPostMade(postData), - addReplyTo(postData, timestamp), - Posts.uploads.sync(postData.pid), - ]); - - result = await plugins.hooks.fire('filter:post.get', { post: postData, uid: data.uid }); - result.post.isMain = isMain; - plugins.hooks.fire('action:post.save', { post: _.clone(result.post) }); - return result.post; - }; - - async function addReplyTo(postData, timestamp) { - if (!postData.toPid) { - return; - } - await Promise.all([ - db.sortedSetAdd(`pid:${postData.toPid}:replies`, timestamp, postData.pid), - db.incrObjectField(`post:${postData.toPid}`, 'replies'), - ]); - } - - async function checkToPid(toPid, uid) { - const [toPost, canViewToPid] = await Promise.all([ - Posts.getPostFields(toPid, ['pid', 'deleted']), - privileges.posts.can('posts:view_deleted', toPid, uid), - ]); - const toPidExists = !!toPost.pid; - if (!toPidExists || (toPost.deleted && !canViewToPid)) { - throw new Error('[[error:invalid-pid]]'); - } - } +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); }; +Object.defineProperty(exports, "__esModule", { value: true }); +const _ = require("lodash"); +const meta = require("../meta"); +const db = require("../database"); +const plugins = require("../plugins"); +const user = require("../user"); +const topics = require("../topics"); +const categories = require("../categories"); +const groups = require("../groups"); +const privileges = require("../privileges"); +function createPosts(Posts) { + function checkToPid(toPid, uid) { + return __awaiter(this, void 0, void 0, function* () { + const [toPost, canViewToPid] = yield Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + Posts.getPostFields(toPid, ['pid', 'deleted']), + privileges.posts.can('posts:view_deleted', toPid, uid), + ]); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + const toPidExists = !!toPost.pid; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (!toPidExists || (toPost.deleted && !canViewToPid)) { + throw new Error('[[error:invalid-pid]]'); + } + }); + } + function addReplyTo(postData, timestamp) { + return __awaiter(this, void 0, void 0, function* () { + if (!postData.toPid) { + return; + } + yield Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.sortedSetAdd(`pid:${postData.toPid}:replies`, timestamp, postData.pid), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.incrObjectField(`post:${postData.toPid}`, 'replies'), + ]); + }); + } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + Posts.create = function (data) { + return __awaiter(this, void 0, void 0, function* () { + // This is an internal method, consider using Topics.reply instead + const { uid, tid, content, timestamp = Date.now(), isMain = false } = data; + if (!uid && parseInt(uid.toString(), 10) !== 0) { + throw new Error('[[error:invalid-uid]]'); + } + if (data.toPid) { + yield checkToPid(data.toPid, uid); + } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + const pid = yield db.incrObjectField('global', 'nextPid'); + let postData = { + pid: pid, + uid: uid, + tid: tid, + content: content.toString(), + timestamp: timestamp, + }; + if (data.toPid) { + postData.toPid = data.toPid; + } + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + if (data.ip && meta.config.trackIpPerPost) { + postData.ip = data.ip; + } + if (data.handle && !parseInt(uid.toString(), 10)) { + postData.handle = data.handle; + } + let result = yield plugins.hooks.fire('filter:post.create', { post: postData, data: data }); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + postData = result.post; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + yield db.setObject(`post:${postData.pid}`, postData); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + const topicData = yield topics.getTopicFields(tid, ['cid', 'pinned']); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + postData.cid = topicData.cid; + yield Promise.all([ + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.sortedSetAdd('posts:pid', timestamp, postData.pid), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + db.incrObjectField('global', 'postCount'), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + user.onNewPostMade(postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + topics.onNewPostMade(postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + categories.onNewPostMade(topicData.cid, topicData.pinned, postData), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + groups.onNewPostMade(postData), + addReplyTo(postData, timestamp), + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + Posts.uploads.sync(postData.pid), + ]); + result = (yield plugins.hooks.fire('filter:post.get', { post: postData, uid: data.uid })); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + result.post.isMain = isMain; + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + yield plugins.hooks.fire('action:post.save', { post: _.clone(result.post) }); + // La siguiente línea llama a una función en un módulo que aún no ha sido actualizado a TS + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + return result.post; + }); + }; +} +module.exports = createPosts;