Skip to content

Commit 809c7ff

Browse files
Gargronktncode
authored andcommitted
Add editing for published statuses (mastodon#17320)
1 parent eb31836 commit 809c7ff

25 files changed

Lines changed: 3152 additions & 1376 deletions

app/controllers/api/v1/media_controller.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def show
2020
end
2121

2222
def update
23-
@media_attachment.update!(media_attachment_params)
23+
@media_attachment.update!(updateable_media_attachment_params)
2424
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
2525
end
2626

@@ -42,6 +42,10 @@ def media_attachment_params
4242
params.permit(:file, :thumbnail, :description, :focus)
4343
end
4444

45+
def updateable_media_attachment_params
46+
params.permit(:thumbnail, :description, :focus)
47+
end
48+
4549
def file_type_error
4650
{ error: 'File type of uploaded media could not be verified' }
4751
end

app/controllers/api/v1/statuses_controller.rb

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
class Api::V1::StatusesController < Api::BaseController
44
include Authorization
55

6-
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :destroy]
7-
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :destroy]
6+
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
7+
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
88
before_action :require_user!, except: [:index, :show, :context, :updated]
99
before_action :set_statuses, only: [:index]
1010
before_action :set_updated_statuses, only: [:updated]
@@ -83,11 +83,27 @@ def create
8383
status_reference_urls: status_params[:status_reference_urls] || [],
8484
searchability: status_params[:searchability]
8585
)
86-
8786

8887
render json: @status, serializer: @status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer
8988
end
9089

90+
def update
91+
@status = Status.where(account: current_account).find(params[:id])
92+
authorize @status, :update?
93+
94+
UpdateStatusService.new.call(
95+
@status,
96+
current_account.id,
97+
text: status_params[:status],
98+
media_ids: status_params[:media_ids],
99+
sensitive: status_params[:sensitive],
100+
spoiler_text: status_params[:spoiler_text],
101+
poll: status_params[:poll]
102+
)
103+
104+
render json: @status, serializer: REST::StatusSerializer
105+
end
106+
91107
def destroy
92108
@status = Status.include_expired.where(account_id: current_account.id).find(status_params[:id])
93109
authorize @status, :destroy?

0 commit comments

Comments
 (0)