Progress on DMs
Progress on DMs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user