Progress on DMs

Progress on DMs
This commit is contained in:
mgabdev
2020-12-19 01:33:33 -05:00
parent 47cd60f851
commit 7ec426e3d8
38 changed files with 447 additions and 197 deletions

View File

@@ -18,12 +18,12 @@ class Api::V1::ChatConversationAccounts::BlockedChatAccountsController < Api::Ba
def paginated_blocks
@paginated_blocks ||= ChatBlock.eager_load(target_account: :account_stat)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
.where(account: current_account)
.paginate_by_max_id(
limit_param(DEFAULT_ACCOUNTS_LIMIT),
params[:max_id],
params[:since_id]
)
end
def insert_pagination_headers

View File

@@ -5,43 +5,47 @@ class Api::V1::ChatConversationAccountsController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:chats' }
before_action :require_user!
before_action :set_account
before_action :set_account, only: [:block_messenger, :unblock_messenger, :messenger_block_relationships]
before_action :check_account_suspension, only: [:block_messenger, :unblock_messenger, :messenger_block_relationships]
before_action :set_chat_conversation, except: [:block_messenger, :unblock_messenger, :messenger_block_relationships]
def block_messenger
BlockMessengerService.new.call(current_user.account, @account)
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships
@block = BlockChatMessengerService.new.call(current_user.account, @account)
render json: @account,
serializer: REST::ChatMessengerBlockedSerializer,
chat_blocking: true
end
def unblock_messenger
UnblockMessengerService.new.call(current_user.account, @account)
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships
UnblockChatMessengerService.new.call(current_user.account, @account)
render json: @account,
serializer: REST::ChatMessengerBlockedSerializer,
chat_blocking: false
end
def messenger_block_relationships
chat_blocking = current_user.account.chat_blocking?(@account)
chat_blocked_by = current_user.account.chat_blocked_by?(@account, current_account)
render json: @account,
serializer: REST::ChatMessengerBlockedSerializer,
chat_blocking: chat_blocking,
chat_blocked_by: chat_blocked_by
end
def mute_chat_conversation
@chat_conversation_account.is_muted = true
@chat_conversation_account.save!
@chat_conversation_account.update!(is_muted: true)
render json: @chat_conversation_account, serializer: REST::ChatConversationAccountSerializer
end
def unmute_chat_conversation
@chat_conversation_account.is_muted = false
@chat_conversation_account.save!
@chat_conversation_account.update!(is_muted: false)
render json: @chat_conversation_account, serializer: REST::ChatConversationAccountSerializer
end
def set_expiration_policy
if current_user.account.is_pro
# : todo :
render json: @chat_conversation_account, serializer: REST::ChatConversationAccountSerializer
else
render json: { error: 'You need to be a GabPRO member to access this' }, status: 422
end
end
private
def set_account
@account = Account.find(params[:id])
@account = Account.find(params[:account_id])
end
def set_chat_conversation

View File

@@ -6,7 +6,13 @@ class Api::V1::ChatConversationController < Api::BaseController
before_action :require_user!
before_action :set_account, only: :create
before_action :set_chat_conversation, only: [:show, :mark_chat_conversation_approved, :mark_chat_conversation_hidden, :mark_chat_conversation_read]
before_action :set_chat_conversation, only: [
:show,
:mark_chat_conversation_approved,
:mark_chat_conversation_hidden,
:mark_chat_conversation_read,
:set_expiration_policy
]
def show
render json: {}, each_serializer: REST::ChatConversationAccountSerializer
@@ -43,6 +49,33 @@ class Api::V1::ChatConversationController < Api::BaseController
end
end
def set_expiration_policy
if current_user.account.is_pro
case params[:expiration]
when 'five_minutes'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:five_minutes]
when 'one_hour'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_hour]
when 'six_hours'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:six_hours]
when 'one_day'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_day]
when 'three_days'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:three_days]
when 'one_week'
@expires_at = ChatConversationAccount::EXPIRATION_POLICY_MAP[:one_week]
else
@expires_at = nil
end
puts "tilly @expires_at: " + @expires_at.inspect
@chat_conversation_account.chat_message_expiration_policy = @expires_at
@chat_conversation_account.save!
render json: @chat_conversation_account, serializer: REST::ChatConversationAccountSerializer
else
render json: { error: 'You need to be a GabPRO member to access this' }, status: 422
end
end
private
def find_or_create_conversation

View File

@@ -16,7 +16,11 @@ class Api::V1::ChatConversations::MessagesController < Api::BaseController
def destroy_all
if current_user.account.is_pro
@chat_conversation_account = PurgeChatMessagesService.new.call(current_user.account, @chat_conversation)
PurgeChatMessagesService.new.call(current_user.account, @chat_conversation)
@chat_conversation_account = ChatConversationAccount.where(
account: current_user.account,
chat_conversation: @chat_conversation
).first
render json: @chat_conversation_account, serializer: REST::ChatConversationAccountSerializer
else
render json: { error: 'You need to be a GabPRO member to access this' }, status: 422

View File

@@ -5,6 +5,7 @@ class Api::V1::ChatMessagesController < Api::BaseController
before_action -> { doorkeeper_authorize! :write, :'write:chats' }
before_action :require_user!
before_action :set_chat_message, only: :destroy
def create
@chat_conversation = ChatConversation.find(chat_params[:chat_conversation_id])
@@ -13,8 +14,9 @@ class Api::V1::ChatMessagesController < Api::BaseController
end
def destroy
@chat = DeleteChatMessageService.new.call(current_user.account, params[:id])
render json: @chat, serializer: REST::ChatMessageSerializer
return not_found if @chatMessage.nil?
DeleteChatMessageService.new.call(@chatMessage)
render json: @chatMessage, serializer: REST::ChatMessageSerializer
end
private
@@ -23,4 +25,8 @@ class Api::V1::ChatMessagesController < Api::BaseController
params.permit(:text, :chat_conversation_id)
end
def set_chat_message
@chatMessage = ChatMessage.where(from_account: current_user.account).find(params[:id])
end
end