Skip to content

Commit fc892b1

Browse files
committed
Add Save & Close button for snippet
1 parent 91b1144 commit fc892b1

File tree

5 files changed

+31
-9
lines changed

5 files changed

+31
-9
lines changed

app/controllers/share/snippets_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ def destroy
6666

6767
def share_snippet_redirect_url(snippet)
6868
case params[:commit]
69-
when "Share"
69+
when /Close/
70+
share_snippet_url(snippet)
71+
when /Share/
7072
new_share_snippet_screenshot_url(snippet, auto: true)
7173
else
7274
edit_share_snippet_url(snippet)

app/views/share/snippets/form.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,14 @@ def view_template
5252

5353
fieldset do
5454
flex_block do
55+
language_select(form, data: {action: "change->snippet-preview#preview"})
56+
5557
plain form.submit "Share", class: "button primary"
5658

5759
plain form.submit "Save", class: "button secondary"
5860

61+
plain form.submit "Save & Close", class: "button secondary"
62+
5963
plain form.submit "Preview",
6064
class: "button secondary hidden",
6165
formaction: form_path,
@@ -65,13 +69,12 @@ def view_template
6569
snippet_preview_target: "previewButton",
6670
turbo_frame: dom_id(snippet, :code_block)
6771
}
68-
69-
language_select(form, data: {action: "change->snippet-preview#preview"})
7072
end
7173
end
7274
end
7375

7476
if @snippet.persisted?
77+
br
7578
br
7679
div do
7780
flex_block do

app/views/share/snippets/show.html.erb

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313
<%= render Pages::Header.new(title: "Snippet Share") %>
1414
<div class="section-content container py-gap mb-3xl">
1515
<%= turbo_frame_tag :snippet_form do %>
16-
<%= render CodeBlock::Snippet.new(@snippet) %>
16+
<div class="section-content">
17+
<%= render CodeBlock::Snippet.new(@snippet) %>
18+
<div>
19+
<%= render Share::Snippets::Toolbar.new(@snippet, current_user: current_user) %>
20+
</div>
21+
</div>
1722
<% end %>
1823

19-
<div>
20-
<%= render Share::Snippets::Toolbar.new(@snippet, current_user: current_user) %>
21-
</div>
22-
2324
<br>
2425

2526
<div>

app/views/share/snippets/toolbar.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ def view_template
1212
flex_block do
1313
link_to "Share", share_url, class: "button primary"
1414
if @current_user&.can_edit?(@snippet)
15-
link_to "Edit this snippet", edit_share_snippet_path(@snippet), class: "button secondary"
15+
link_to "Edit this snippet", edit_share_snippet_path(@snippet),
16+
class: "button secondary",
17+
data: {turbo_frame: "snippet_form"}
1618
end
1719
end
1820
end

spec/requests/share/snippets_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,11 @@
109109
post share_snippets_url, params: {snippet: {source: "puts \"Hello!\"", language: "ruby"}, commit: "Share"}
110110
expect(response).to redirect_to(new_share_snippet_screenshot_url(Snippet.last, auto: true))
111111
end
112+
113+
it "redirects to the show page" do
114+
post share_snippets_url, params: {snippet: {source: "puts \"Hello!\"", language: "ruby"}, commit: "Save & Close"}
115+
expect(response).to redirect_to(share_snippet_url(Snippet.last))
116+
end
112117
end
113118

114119
context "with invalid parameters" do
@@ -173,6 +178,15 @@
173178
snippet.reload
174179
expect(response).to redirect_to(new_share_snippet_screenshot_url(snippet, auto: true))
175180
end
181+
182+
it "redirects to the show page" do
183+
user = login_as_user
184+
Flipper.enable(:snippets, user)
185+
snippet = FactoryBot.create(:snippet, author: user)
186+
patch share_snippet_url(snippet), params: {snippet: {source: "puts \"Goodbye!\""}, commit: "Save & Close"}
187+
snippet.reload
188+
expect(response).to redirect_to(share_snippet_url(snippet))
189+
end
176190
end
177191

178192
context "with invalid parameters" do

0 commit comments

Comments
 (0)