From b2f41f16c36f8c2a7fdb8a5c06635bfc3ac610d9 Mon Sep 17 00:00:00 2001 From: Calvin Armstrong <138508650+armstrca@users.noreply.github.com> Date: Wed, 11 Oct 2023 22:10:06 +0000 Subject: [PATCH 1/5] CRUD done maybe should do likes/follows next --- app/controllers/comments_controller.rb | 34 ++++++++++++------- app/views/comments/_comment.html.erb | 10 ++++-- app/views/comments/_form.html.erb | 4 +-- app/views/comments/create.js.erb | 9 ++++++ app/views/comments/destroy.js.erb | 3 ++ app/views/comments/edit.js.erb | 1 + app/views/comments/update.js.erb | 1 + config/importmap.rb | 2 +- domain modeling notes | 45 ++++++++++++++++++++++++++ 9 files changed, 91 insertions(+), 18 deletions(-) create mode 100644 app/views/comments/create.js.erb create mode 100644 app/views/comments/destroy.js.erb create mode 100644 app/views/comments/edit.js.erb create mode 100644 app/views/comments/update.js.erb create mode 100644 domain modeling notes diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 5b62df9e..e2c3acaa 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -21,6 +21,7 @@ def new def edit respond_to do |format| format.html + format.js end end @@ -33,9 +34,11 @@ def create if @comment.save format.html { redirect_back fallback_location: root_path, notice: "Comment was successfully created." } format.json { render :show, status: :created, location: @comment } + format.js else format.html { render :new, status: :unprocessable_entity } format.json { render json: @comment.errors, status: :unprocessable_entity } + format.js end end end @@ -46,9 +49,11 @@ def update if @comment.update(comment_params) format.html { redirect_to root_url, notice: "Comment was successfully updated." } format.json { render :show, status: :ok, location: @comment } + format.js else format.html { render :edit, status: :unprocessable_entity } format.json { render json: @comment.errors, status: :unprocessable_entity } + format.js end end end @@ -59,23 +64,28 @@ def destroy respond_to do |format| format.html { redirect_back fallback_location: root_url, notice: "Comment was successfully destroyed." } format.json { head :no_content } + + format.js do + render template: "comments/destroy" + end end end private - # Use callbacks to share common setup or constraints between actions. - def set_comment - @comment = Comment.find(params[:id]) - end - def ensure_current_user_is_owner - if current_user != @comment.author - redirect_back fallback_location: root_url, alert: "You're not authorized for that." - end - end + # Use callbacks to share common setup or constraints between actions. + def set_comment + @comment = Comment.find(params[:id]) + end - # Only allow a list of trusted parameters through. - def comment_params - params.require(:comment).permit(:author_id, :photo_id, :body) + def ensure_current_user_is_owner + if current_user != @comment.author + redirect_back fallback_location: root_url, alert: "You're not authorized for that." end + end + + # Only allow a list of trusted parameters through. + def comment_params + params.require(:comment).permit(:author_id, :photo_id, :body) + end end diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 7b8dc14d..9ba17c6c 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -1,4 +1,4 @@ -
  • +
  • <%= image_tag comment.author.avatar_image, class: "rounded-circle mr-2", width: 36 %> @@ -11,11 +11,15 @@
    <% if current_user == comment.author %> - <%= link_to edit_comment_path(comment), class: "btn btn-link btn-sm text-muted" do %> + <%= link_to edit_comment_path(comment), class: "btn btn-link btn-sm text-muted", remote: true do %> <% end %> - <%= link_to comment, data: { turbo_method: :delete }, class: "btn btn-link btn-sm text-muted" do %> + <%= link_to comment, + method: :delete, + class: "btn btn-link btn-sm text-muted", + remote: true do %> + <% end %> <% end %> diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index 4917fb32..25ad8897 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,5 +1,5 @@ -
  • - <%= form_with(model: comment) do |form| %> +
  • + <%= form_with(model: comment, local: false) do |form| %> <% if comment.errors.any? %>
    From 85fd7c4c9bd1625558072a1b0344d334972fdc34 Mon Sep 17 00:00:00 2001 From: Calvin Armstrong <138508650+armstrca@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:42:59 +0000 Subject: [PATCH 3/5] fixed likes --- app/controllers/likes_controller.rb | 15 +-------------- app/views/likes/_create.js.erb | 9 --------- app/views/likes/_form.html.erb | 2 +- app/views/likes/create.js.erb | 1 + app/views/likes/destroy.js.erb | 4 +--- app/views/photos/_likes.html.erb | 4 ++-- 6 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 app/views/likes/_create.js.erb create mode 100644 app/views/likes/create.js.erb diff --git a/app/controllers/likes_controller.rb b/app/controllers/likes_controller.rb index 84349c2e..21f1460d 100644 --- a/app/controllers/likes_controller.rb +++ b/app/controllers/likes_controller.rb @@ -1,8 +1,6 @@ class LikesController < ApplicationController before_action :set_like, only: %i[ show edit update destroy ] - before_action :ensure_current_user_is_owner, only: [:destroy, :create] - # GET /likes or /likes.json def index @likes = Like.all @@ -29,7 +27,6 @@ def edit # POST /likes or /likes.json def create @like = Like.new(like_params) - @like.fan_id = current_user respond_to do |format| if @like.save @@ -39,7 +36,6 @@ def create else format.html { render :new, status: :unprocessable_entity } format.json { render json: @like.errors, status: :unprocessable_entity } - format.js end end end @@ -66,9 +62,7 @@ def destroy format.html { redirect_back fallback_location: root_url, notice: "Like was successfully destroyed." } format.json { head :no_content } - format.js do - render template: "likes/destroy" - end + format.js end end @@ -79,13 +73,6 @@ def set_like @like = Like.find(params[:id]) end - def ensure_current_user_is_owner - @like = Like.find(params[:id]) - if current_user != @like.fan_id - redirect_back fallback_location: root_url, alert: "You're not authorized for that." - end - end - # Only allow a list of trusted parameters through. def like_params params.require(:like).permit(:fan_id, :photo_id) diff --git a/app/views/likes/_create.js.erb b/app/views/likes/_create.js.erb deleted file mode 100644 index 6100d313..00000000 --- a/app/views/likes/_create.js.erb +++ /dev/null @@ -1,9 +0,0 @@ -var added_like = $("<%= j(render @like) %>"); - -added_like.hide(); - -$("#<%= dom_id(@like.photo) %>_new_like_form").before(added_like); - -added_like.slideDown(); - -$("#<%= dom_id(@like.photo) %>_new_like_form #like_body").val(""); diff --git a/app/views/likes/_form.html.erb b/app/views/likes/_form.html.erb index 6ee11172..6880a0d9 100644 --- a/app/views/likes/_form.html.erb +++ b/app/views/likes/_form.html.erb @@ -1,4 +1,4 @@ -<%= form_with(model: like, class: "d-inline-block") do |form| %> +<%= form_with(model: like, local: false, class: "d-inline-block") do |form| %> <%= form.hidden_field :fan_id %> <%= form.hidden_field :photo_id %> diff --git a/app/views/likes/create.js.erb b/app/views/likes/create.js.erb new file mode 100644 index 00000000..37835d08 --- /dev/null +++ b/app/views/likes/create.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id(@like.photo) %>_likes").replaceWith("<%= j(render "photos/likes", photo: @like.photo) %>") diff --git a/app/views/likes/destroy.js.erb b/app/views/likes/destroy.js.erb index d5a3e73f..7f6c939a 100644 --- a/app/views/likes/destroy.js.erb +++ b/app/views/likes/destroy.js.erb @@ -1,3 +1 @@ -$("#<%= dom_id(@like) %>").fadeOut(500, function() { - $(this).remove(); -}); +$("#<%= dom_id(@like.photo) %>_likes").replaceWith("<%= j(render 'photos/likes', photo: @like.photo) %>") diff --git a/app/views/photos/_likes.html.erb b/app/views/photos/_likes.html.erb index b3fc00a7..54fe049f 100644 --- a/app/views/photos/_likes.html.erb +++ b/app/views/photos/_likes.html.erb @@ -5,13 +5,13 @@ <% like = current_user.likes.find_by(photo: photo) %> <% if like %> - <%= link_to like, class: "btn btn-link link-underline-dark link-underline link-underline-opacity-0 link-underline-opacity-100-hover", data: { method: :delete, remote: true } do %> + <%= link_to like, class: "btn btn-link link-underline-dark link-underline link-underline-opacity-0 link-underline-opacity-100-hover", method: :delete, remote: true do %> Un-like <% end %> <% else %> - <%= render "likes/create", like: photo.likes.build(fan: current_user) %> + <%= render "likes/form", like: photo.likes.build(fan: current_user) %> <% end %> From c8ae8aed9add5aa7c3f62fb82941111c451d1ab7 Mon Sep 17 00:00:00 2001 From: Calvin Armstrong <138508650+armstrca@users.noreply.github.com> Date: Thu, 12 Oct 2023 19:13:06 +0000 Subject: [PATCH 4/5] likes and follow requests complete --- app/controllers/follow_requests_controller.rb | 7 +++++++ app/views/follow_requests/_follow_unfollow.html.erb | 4 ++-- app/views/follow_requests/create.js.erb | 1 + app/views/follow_requests/destroy.js.erb | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 app/views/follow_requests/create.js.erb create mode 100644 app/views/follow_requests/destroy.js.erb diff --git a/app/controllers/follow_requests_controller.rb b/app/controllers/follow_requests_controller.rb index 9c30da7c..d96c50dc 100644 --- a/app/controllers/follow_requests_controller.rb +++ b/app/controllers/follow_requests_controller.rb @@ -8,6 +8,7 @@ def index # GET /follow_requests/1 or /follow_requests/1.json def show + format.js end # GET /follow_requests/new @@ -17,6 +18,7 @@ def new # GET /follow_requests/1/edit def edit + format.js end # POST /follow_requests or /follow_requests.json @@ -28,9 +30,11 @@ def create if @follow_request.save format.html { redirect_back fallback_location: root_url, notice: "Follow request was successfully created." } format.json { render :show, status: :created, location: @follow_request } + format.js else format.html { render :new, status: :unprocessable_entity } format.json { render json: @follow_request.errors, status: :unprocessable_entity } + format.js end end end @@ -41,9 +45,11 @@ def update if @follow_request.update(follow_request_params) format.html { redirect_back fallback_location: root_url, notice: "Follow request was successfully updated." } format.json { render :show, status: :ok, location: @follow_request } + format.js else format.html { render :edit, status: :unprocessable_entity } format.json { render json: @follow_request.errors, status: :unprocessable_entity } + format.js end end end @@ -54,6 +60,7 @@ def destroy respond_to do |format| format.html { redirect_back fallback_location: root_url, notice: "Follow request was successfully destroyed." } format.json { head :no_content } + format.js end end diff --git a/app/views/follow_requests/_follow_unfollow.html.erb b/app/views/follow_requests/_follow_unfollow.html.erb index a7f2292f..14811bd8 100644 --- a/app/views/follow_requests/_follow_unfollow.html.erb +++ b/app/views/follow_requests/_follow_unfollow.html.erb @@ -3,11 +3,11 @@ <% if follow_request %> <% if follow_request.pending? %> - <%= link_to follow_request, data: { turbo_method: :delete }, class: "btn btn-outline-secondary" do %> + <%= link_to follow_request, method: :delete, remote: true, class: "btn btn-outline-secondary" do %> Un-request <% end %> <% elsif follow_request.accepted? %> - <%= link_to follow_request, data: { turbo_method: :delete }, class: "btn btn-outline-secondary" do %> + <%= link_to follow_request, method: :delete, remote: true, class: "btn btn-outline-secondary" do %> Un-follow <% end %> <% end %> diff --git a/app/views/follow_requests/create.js.erb b/app/views/follow_requests/create.js.erb new file mode 100644 index 00000000..17173e04 --- /dev/null +++ b/app/views/follow_requests/create.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id(@follow_request.id) %>_likes").replaceWith("<%= j(render 'users/show', follow_request: @follow_request.id) %>") diff --git a/app/views/follow_requests/destroy.js.erb b/app/views/follow_requests/destroy.js.erb new file mode 100644 index 00000000..17173e04 --- /dev/null +++ b/app/views/follow_requests/destroy.js.erb @@ -0,0 +1 @@ +$("#<%= dom_id(@follow_request.id) %>_likes").replaceWith("<%= j(render 'users/show', follow_request: @follow_request.id) %>") From e2c3d98d94956ae209b799e4845cd4871e05147f Mon Sep 17 00:00:00 2001 From: Calvin Armstrong <138508650+armstrca@users.noreply.github.com> Date: Fri, 10 Nov 2023 21:19:50 +0000 Subject: [PATCH 5/5] updated pull request for grades --- config/routes.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 96ef65f0..b907ed6e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,4 +12,7 @@ get ":username/liked" => "users#liked", as: :liked get ":username/feed" => "users#feed", as: :feed get ":username/discover" => "users#discover", as: :discover -end \ No newline at end of file + + + #########extra message for pull request purposes +end