Sha256: 4fcb24614f6c9c542fdc50fb0f68ab4bb8aa0da893cade613674eb904efd2c4b

Contents?: true

Size: 1.44 KB

Versions: 123

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/snippets"

#
# This controller handles copying snippets (when I am the owner) and cloning them (when I am not).
# The ownership drives what suffix is appended to the snippet title to keep it unique.
#
module Renalware
  module Snippets
    class SnippetClonesController < BaseController
      COPY_SUFFIX = "[COPY]"
      CLONE_SUFFIX = "[CLONE]"

      def create
        snippet = duplicate_current_snippet
        authorize snippet
        snippet.save!
        redirect_to edit_snippet_path(snippet)
      end

      private

      def duplicate_current_snippet
        title_suffix = title_suffix_to_apply_to_the_duplicate(current_snippet)
        current_snippet.dup.tap do |snippet|
          snippet.author = Snippets.cast_user(current_user)
          snippet.title = snippet_title_generator_for(snippet, title_suffix: title_suffix).call
          snippet.last_used_on = nil
          snippet.times_used = 0
        end
      end

      def current_snippet
        Snippet.find(params[:snippet_id])
      end

      def title_suffix_to_apply_to_the_duplicate(snippet)
        snippet_is_mine?(snippet) ? COPY_SUFFIX : CLONE_SUFFIX
      end

      def snippet_title_generator_for(snippet, title_suffix:)
        DuplicateSnippetTitleGenerator.new(snippet, title_suffix: title_suffix)
      end

      def snippet_is_mine?(snippet)
        snippet.author_id == current_user.id
      end
    end
  end
end

Version data entries

123 entries across 123 versions & 1 rubygems

Version Path
renalware-core-2.1.1 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.1.0 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.167 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.166 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.165 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.164 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.163 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.162 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.161 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.160 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.159 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.158 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.157 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.156 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.155 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.153 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.152 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.151 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.149 app/controllers/renalware/snippets/snippet_clones_controller.rb
renalware-core-2.0.148 app/controllers/renalware/snippets/snippet_clones_controller.rb