"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessagesResolver = void 0; const graphql_1 = require("@nestjs/graphql"); const common_1 = require("@nestjs/common"); const graphql_subscriptions_1 = require("graphql-subscriptions"); const messages_service_1 = require("./messages.service"); const message_entity_1 = require("./entities/message.entity"); const gql_auth_guard_1 = require("../auth/guards/gql-auth.guard"); const current_user_decorator_1 = require("../auth/decorators/current-user.decorator"); const user_entity_1 = require("../users/entities/user.entity"); const pubSub = new graphql_subscriptions_1.PubSub(); let MessagesResolver = class MessagesResolver { messagesService; constructor(messagesService) { this.messagesService = messagesService; } findAll(conversationId, user) { return this.messagesService.findAllInConversation(conversationId, user.id); } async sendMessage(user, conversationId, content) { const message = await this.messagesService.create(conversationId, user.id, content); pubSub.publish('messageAdded', { messageAdded: message }); return message; } updateMessage(user, messageId, content) { return this.messagesService.update(messageId, user.id, content); } deleteMessage(user, messageId) { return this.messagesService.delete(messageId, user.id); } markMessageAsRead(user, messageId) { return this.messagesService.markAsRead(messageId, user.id); } messageAdded(conversationId) { return pubSub.asyncIterator('messageAdded'); } }; exports.MessagesResolver = MessagesResolver; __decorate([ (0, graphql_1.Query)(() => [message_entity_1.Message], { name: 'messages' }), __param(0, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })), __param(1, (0, current_user_decorator_1.CurrentUser)()), __metadata("design:type", Function), __metadata("design:paramtypes", [String, user_entity_1.User]), __metadata("design:returntype", void 0) ], MessagesResolver.prototype, "findAll", null); __decorate([ (0, graphql_1.Mutation)(() => message_entity_1.Message), __param(0, (0, current_user_decorator_1.CurrentUser)()), __param(1, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })), __param(2, (0, graphql_1.Args)('content')), __metadata("design:type", Function), __metadata("design:paramtypes", [user_entity_1.User, String, String]), __metadata("design:returntype", Promise) ], MessagesResolver.prototype, "sendMessage", null); __decorate([ (0, graphql_1.Mutation)(() => message_entity_1.Message), __param(0, (0, current_user_decorator_1.CurrentUser)()), __param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })), __param(2, (0, graphql_1.Args)('content')), __metadata("design:type", Function), __metadata("design:paramtypes", [user_entity_1.User, String, String]), __metadata("design:returntype", void 0) ], MessagesResolver.prototype, "updateMessage", null); __decorate([ (0, graphql_1.Mutation)(() => Boolean), __param(0, (0, current_user_decorator_1.CurrentUser)()), __param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })), __metadata("design:type", Function), __metadata("design:paramtypes", [user_entity_1.User, String]), __metadata("design:returntype", void 0) ], MessagesResolver.prototype, "deleteMessage", null); __decorate([ (0, graphql_1.Mutation)(() => message_entity_1.Message), __param(0, (0, current_user_decorator_1.CurrentUser)()), __param(1, (0, graphql_1.Args)('messageId', { type: () => graphql_1.ID })), __metadata("design:type", Function), __metadata("design:paramtypes", [user_entity_1.User, String]), __metadata("design:returntype", void 0) ], MessagesResolver.prototype, "markMessageAsRead", null); __decorate([ (0, graphql_1.Subscription)(() => message_entity_1.Message, { filter: (payload, variables) => { return payload.messageAdded.conversation.id === variables.conversationId; }, }), __param(0, (0, graphql_1.Args)('conversationId', { type: () => graphql_1.ID })), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", void 0) ], MessagesResolver.prototype, "messageAdded", null); exports.MessagesResolver = MessagesResolver = __decorate([ (0, graphql_1.Resolver)(() => message_entity_1.Message), (0, common_1.UseGuards)(gql_auth_guard_1.GqlAuthGuard), __metadata("design:paramtypes", [messages_service_1.MessagesService]) ], MessagesResolver); //# sourceMappingURL=messages.resolver.js.map