Skip to content
Snippets Groups Projects
Commit f14f462e authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Adding Turbolinks, adding status posting form on homepage

parent c28971c7
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,7 @@ gem 'onebox'
gem 'simple_form'
gem 'will_paginate', '~> 3.0.6'
gem 'rack-attack'
gem 'turbolinks', '~> 5.0.0.beta'
group :development, :test do
gem 'rspec-rails'
......
......@@ -293,6 +293,9 @@ GEM
thor (0.19.1)
thread_safe (0.3.5)
tilt (2.0.2)
turbolinks (5.0.0.beta2)
turbolinks-source
turbolinks-source (5.0.0.beta3)
tzinfo (1.2.2)
thread_safe (~> 0.1)
uglifier (2.7.2)
......@@ -362,6 +365,7 @@ DEPENDENCIES
simple_form
simplecov
therubyracer
turbolinks (~> 5.0.0.beta)
uglifier (>= 1.3.0)
web-console (~> 2.0)
webmock
......
......@@ -12,4 +12,5 @@
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://coffeescript.org/
......@@ -200,6 +200,15 @@
box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
}
}
hr {
clear: both;
border: 0;
padding: 0;
width: 100%;
height: 0;
margin: 30px 0;
}
}
.dashboard__top-bar {
......
// Place all the styles related to the statuses controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
class StatusesController < ApplicationController
layout 'dashboard'
before_action :authenticate_user!
def create
status = PostStatusService.new.(current_user.account, status_params[:text])
redirect_to root_path
rescue ActiveRecord::RecordInvalid
redirect_to root_path
end
private
def status_params
params.require(:status).permit(:text)
end
end
module StatusesHelper
end
......@@ -13,6 +13,7 @@ class Status < ActiveRecord::Base
validates :account, presence: true
validates :uri, uniqueness: true, unless: 'local?'
validates :text, presence: true, if: Proc.new { |s| s.local? && !s.reblog? }
scope :with_counters, -> { select('statuses.*, (select count(r.id) from statuses as r where r.reblog_of_id = statuses.id) as reblogs_count, (select count(f.id) from favourites as f where f.status_id = statuses.id) as favourites_count') }
scope :with_includes, -> { includes(:account, reblog: :account, thread: :account) }
......
......@@ -7,7 +7,10 @@ class FollowRemoteAccountService < BaseService
# @return [Account]
def call(uri, subscribe = true)
username, domain = uri.split('@')
account = Account.where(username: username, domain: domain).first
return Account.find_local(username) if domain == Rails.configuration.x.local_domain
account = Account.find_by(username: username, domain: domain)
if account.nil?
account = Account.new(username: username, domain: domain)
......
= simple_form_for Status.new, url: statuses_path, method: :post do |f|
= f.input :text, required: true, autofocus: true, label: false, placeholder: 'What are you up to?'
.form-actions
= f.button :submit, 'Post update'
%hr/
%h3 OAuth2
%p All API methods require a valid access token.
......@@ -83,6 +91,15 @@
%samp /api/accounts/:id/unfollow
.description
Unfollows target account from the user's account. Returns the target account.
%li
.address
%samp.method GET
%samp /api/accounts/lookup
.options
Options:
%samp usernames
.description
Returns accounts for a comma-separated list of usernames
%h3 Follows
%ul.api-descriptions
......
......@@ -21,7 +21,8 @@ Rails.application.routes.draw do
end
end
resource :settings, only: [:show, :update]
resource :settings, only: [:show, :update]
resources :statuses, only: [:create]
namespace :api do
# PubSubHubbub
......
require 'rails_helper'
RSpec.describe StatusesController, type: :controller do
let(:user) { Fabricate(:user) }
before do
sign_in :user, user
end
describe 'POST #create' do
before do
stub_request(:post, "https://pubsubhubbub.superfeedr.com/").to_return(:status => 200, :body => "", :headers => {})
post :create, status: { text: 'Hello world' }
end
it 'redirects back to homepage' do
expect(response).to redirect_to(root_path)
end
it 'creates a new status' do
expect(user.account.statuses.count).to eq 1
end
end
end
require 'rails_helper'
# Specs in this file have access to a helper object that includes
# the StatusesHelper. For example:
#
# describe StatusesHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# expect(helper.concat_strings("this","that")).to eq("this that")
# end
# end
# end
RSpec.describe StatusesHelper, type: :helper do
pending "add some examples to (or delete) #{__FILE__}"
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment