automatic rubocop fixes

This commit is contained in:
Devin Howard 2017-11-06 08:15:18 -08:00
parent 006920b686
commit 9f1a2fa2b2
208 changed files with 515 additions and 325 deletions

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
source 'https://rubygems.org'
ruby '2.3.0'
@ -47,10 +48,10 @@ end
group :development, :test do
gem 'better_errors'
gem 'binding_of_caller'
gem 'faker'
gem 'pry-byebug'
gem 'pry-rails'
gem 'rubocop'
gem 'tunemygc'
gem 'faker'
gem 'rubocop', '~> 0.46.0' # match code climate https://github.com/tootsuite/mastodon/issues/1758
gem 'timecop'
gem 'tunemygc'
end

View file

@ -166,7 +166,6 @@ GEM
cocaine (~> 0.5.5)
mime-types
mimemagic (~> 0.3.0)
parallel (1.12.0)
parser (2.4.0.0)
ast (~> 2.2)
pg (0.21.0)
@ -241,14 +240,13 @@ GEM
rspec-mocks (~> 3.6.0)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
rubocop (0.49.1)
parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0)
rubocop (0.46.0)
parser (>= 2.3.1.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
ruby-progressbar (1.8.1)
ruby-progressbar (1.9.0)
sass (3.5.1)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
@ -333,7 +331,7 @@ DEPENDENCIES
rails (~> 5.0.0)
redis (~> 3.3.3)
rspec-rails
rubocop
rubocop (~> 0.46.0)
sass-rails
shoulda-matchers
simplecov

View file

@ -1,5 +1,6 @@
#!/usr/bin/env rake
# frozen_string_literal: true
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module ApplicationCable
class Channel < ActionCable::Channel::Base
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MapChannel < ApplicationCable::Channel
# Called when the consumer has successfully
# become a subscriber of this channel.

View file

@ -1,11 +1,12 @@
# frozen_string_literal: true
class AccessController < ApplicationController
before_action :require_user, only: [:access, :access_request,
:approve_access, :approve_access_post,
:deny_access, :deny_access_post, :request_access]
before_action :set_map, only: [:access, :access_request,
:approve_access, :approve_access_post,
:deny_access, :deny_access_post, :request_access]
before_action :require_user, only: %i(access access_request
approve_access approve_access_post
deny_access deny_access_post request_access)
before_action :set_map, only: %i(access access_request
approve_access approve_access_post
deny_access deny_access_post request_access)
after_action :verify_authorized
# GET maps/:id/request_access

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V1
class DeprecatedController < ApplicationController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class MappingsController < WithUpdatesController

View file

@ -1,9 +1,10 @@
# frozen_string_literal: true
module Api
module V2
class MapsController < WithUpdatesController
def searchable_columns
[:name, :desc]
%i(name desc)
end
def apply_filters(collection)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class MetacodesController < RestfulController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class RestfulController < ActionController::Base
@ -7,7 +8,7 @@ module Api
snorlax_used_rest!
before_action :load_resource, only: [:show, :update, :destroy]
before_action :load_resource, only: %i(show update destroy)
after_action :verify_authorized
def index
@ -91,7 +92,7 @@ module Api
end
def doorkeeper_user
return unless doorkeeper_token.present?
return if doorkeeper_token.blank?
doorkeeper_render_error unless valid_doorkeeper_token?
@doorkeeper_user ||= User.find(doorkeeper_token.resource_owner_id)
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class SessionsController < ApplicationController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class StarsController < RestfulController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class SynapsesController < WithUpdatesController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class TokensController < RestfulController

View file

@ -1,9 +1,10 @@
# frozen_string_literal: true
module Api
module V2
class TopicsController < WithUpdatesController
def searchable_columns
[:name, :desc, :link]
%i(name desc link)
end
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class UsersController < RestfulController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Api
module V2
class WithUpdatesController < RestfulController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class ApplicationController < ActionController::Base
include ApplicationHelper
include Pundit

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
class ExploreController < ApplicationController
before_action :require_authentication, only: [:mine, :shared, :starred]
before_action :require_authentication, only: %i(mine shared starred)
before_action :authorize_explore
after_action :verify_authorized
after_action :verify_policy_scoped

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
# bad code that should be checked over before entering one of the
# nice files from the right side of this repo
class HacksController < ApplicationController

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MainController < ApplicationController
before_action :authorize_main
after_action :verify_authorized

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
class MappingsController < ApplicationController
before_action :require_user, only: [:create, :update, :destroy]
before_action :require_user, only: %i(create update destroy)
after_action :verify_authorized, except: :index
after_action :verify_policy_scoped, only: :index

View file

@ -1,7 +1,8 @@
# frozen_string_literal: true
class MapsController < ApplicationController
before_action :require_user, only: [:create, :update, :destroy, :events, :follow, :unfollow]
before_action :set_map, only: [:show, :conversation, :update, :destroy, :contains, :events, :export, :follow, :unfollow, :unfollow_from_email]
before_action :require_user, only: %i(create update destroy events follow unfollow)
before_action :set_map, only: %i(show conversation update destroy contains events export follow unfollow unfollow_from_email)
after_action :verify_authorized
# GET maps/:id
@ -23,7 +24,7 @@ class MapsController < ApplicationController
format.ttl { redirect_to action: :export, format: :ttl }
end
end
# GET maps/:id/conversation
def conversation
respond_to do |format|
@ -140,7 +141,7 @@ class MapsController < ApplicationController
# POST maps/:id/follow
def follow
follow = FollowService.follow(@map, current_user, 'followed')
follow = FollowService.follow(@map, current_user, 'followed')
respond_to do |format|
format.json do
@ -155,7 +156,7 @@ class MapsController < ApplicationController
# POST maps/:id/unfollow
def unfollow
FollowService.unfollow(@map, current_user)
FollowService.unfollow(@map, current_user)
respond_to do |format|
format.json do

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MessagesController < ApplicationController
before_action :require_user, except: [:show]
after_action :verify_authorized

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MetacodeSetsController < ApplicationController
before_action :require_admin

View file

@ -1,7 +1,8 @@
# frozen_string_literal: true
class MetacodesController < ApplicationController
before_action :require_admin, except: [:index, :show]
before_action :set_metacode, only: [:edit, :update]
before_action :require_admin, except: %i(index show)
before_action :set_metacode, only: %i(edit update)
# GET /metacodes
# GET /metacodes.json

View file

@ -1,8 +1,9 @@
# frozen_string_literal: true
class NotificationsController < ApplicationController
before_action :set_receipts, only: [:index, :show, :mark_read, :mark_unread]
before_action :set_notification, only: [:show, :mark_read, :mark_unread]
before_action :set_receipt, only: [:show, :mark_read, :mark_unread]
before_action :set_receipts, only: %i(index show mark_read mark_unread)
before_action :set_notification, only: %i(show mark_read mark_unread)
before_action :set_receipt, only: %i(show mark_read mark_unread)
def index
@notifications = current_user.mailbox.notifications.page(params[:page]).per(25)
@ -27,14 +28,14 @@ class NotificationsController < ApplicationController
respond_to do |format|
format.html do
case @notification.notification_code
when MAP_ACCESS_APPROVED, MAP_INVITE_TO_EDIT
redirect_to map_path(@notification.notified_object.map)
when TOPIC_ADDED_TO_MAP
redirect_to map_path(@notification.notified_object.map)
when TOPIC_CONNECTED_1
redirect_to topic_path(@notification.notified_object.topic1)
when TOPIC_CONNECTED_2
redirect_to topic_path(@notification.notified_object.topic2)
when MAP_ACCESS_APPROVED, MAP_INVITE_TO_EDIT
redirect_to map_path(@notification.notified_object.map)
when TOPIC_ADDED_TO_MAP
redirect_to map_path(@notification.notified_object.map)
when TOPIC_CONNECTED_1
redirect_to topic_path(@notification.notified_object.topic1)
when TOPIC_CONNECTED_2
redirect_to topic_path(@notification.notified_object.topic2)
end
end
format.json do

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class SearchController < ApplicationController
include TopicsHelper
include MapsHelper
@ -7,7 +8,7 @@ class SearchController < ApplicationController
before_action :authorize_search
after_action :verify_authorized
after_action :verify_policy_scoped, only: [:maps, :mappers, :synapses, :topics]
after_action :verify_policy_scoped, only: %i(maps mappers synapses topics)
# get /search/topics?term=SOMETERM
def topics
@ -140,13 +141,13 @@ class SearchController < ApplicationController
topic1id = params[:topic1id]
topic2id = params[:topic2id]
if term && !term.empty?
if term.present?
@synapses = policy_scope(Synapse)
.where('LOWER("desc") like ?', '%' + term.downcase.strip + '%')
.order('"desc"')
@synapses = @synapses.uniq(&:desc)
elsif topic1id && !topic1id.empty?
elsif topic1id.present?
one = policy_scope(Synapse).where(topic1_id: topic1id, topic2_id: topic2id)
two = policy_scope(Synapse).where(topic2_id: topic1id, topic1_id: topic2id)
@synapses = one + two

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class StarsController < ApplicationController
before_action :require_user
before_action :set_map

View file

@ -1,8 +1,9 @@
# frozen_string_literal: true
class SynapsesController < ApplicationController
include TopicsHelper
before_action :require_user, only: [:create, :update, :destroy]
before_action :require_user, only: %i(create update destroy)
after_action :verify_authorized, except: :index
after_action :verify_policy_scoped, only: :index

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class TokensController < ApplicationController
before_action :require_user, only: [:new]

View file

@ -1,11 +1,12 @@
# frozen_string_literal: true
class TopicsController < ApplicationController
include TopicsHelper
before_action :require_user, only: [:create, :update, :destroy, :follow, :unfollow]
before_action :set_topic, only: [:show, :update, :relative_numbers,
:relatives, :network, :destroy,
:follow, :unfollow, :unfollow_from_email]
before_action :require_user, only: %i(create update destroy follow unfollow)
before_action :set_topic, only: %i(show update relative_numbers
relatives network destroy
follow unfollow unfollow_from_email)
after_action :verify_authorized, except: :autocomplete_topic
respond_to :html, :js, :json
@ -13,7 +14,7 @@ class TopicsController < ApplicationController
# GET /topics/autocomplete_topic
def autocomplete_topic
term = params[:term]
if term && !term.empty?
if term.present?
topics = policy_scope(Topic)
.where('LOWER("name") like ?', term.downcase + '%')
.order('"name"')

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Users
class PasswordsController < Devise::PasswordsController
protected

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Users
class RegistrationsController < Devise::RegistrationsController
before_action :configure_sign_up_params, only: [:create]
@ -29,7 +30,7 @@ module Users
end
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :joinedwithcode])
devise_parameter_sanitizer.permit(:sign_up, keys: %i(name joinedwithcode))
end
def configure_account_update_params

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Users
class SessionsController < Devise::SessionsController
after_action :store_location, only: [:new]

View file

@ -1,6 +1,7 @@
# frozen_string_literal: true
class UsersController < ApplicationController
before_action :require_user, only: [:edit, :update, :updatemetacodes, :update_metacode_focus]
before_action :require_user, only: %i(edit update updatemetacodes update_metacode_focus)
respond_to :html, :json
@ -100,7 +101,7 @@ class UsersController < ApplicationController
@user.settings.metacode_focus = params[:value]
@user.save
respond_to do |format|
format.json { render json: { success: "success" }}
format.json { render json: { success: 'success' } }
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class NotificationDecorator
class << self
def decorate(notification, receipt)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module ApplicationHelper
def invite_link
"#{request.base_url}/join" + (current_user ? "?code=#{current_user.code}" : '')

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module ContentHelper
def resource_name
:user

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module DeviseHelper
def devise_error_messages!
resource.errors.to_a[0]

View file

@ -1,3 +1,4 @@
# frozen_string_literal: true
module InMetacodeSetsHelper
end

View file

@ -1,3 +1,4 @@
# frozen_string_literal: true
module MainHelper
end

View file

@ -1,3 +1,5 @@
# frozen_string_literal: true
module MapMailerHelper
def access_approved_subject(map)
map.name + ' - access approved'
@ -5,9 +7,9 @@ module MapMailerHelper
def access_request_subject(map)
map.name + ' - request to edit'
end
end
def invite_to_edit_subject(map)
map.name + ' - invited to edit'
end
end
end

View file

@ -1,3 +1,4 @@
# frozen_string_literal: true
module MappingHelper
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module MapsHelper
# JSON autocomplete format for typeahead
def autocomplete_map_array_json(maps)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module MetacodesHelper
def metacodeset
metacodes = current_user.settings.metacodes

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module SynapsesHelper
## this one is for building our custom JSON autocomplete format for typeahead
def autocomplete_synapse_generic_json(unique)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module TopicMailerHelper
def added_to_map_subject(topic, map)
topic.name + ' was added to map ' + map.name
@ -7,4 +8,4 @@ module TopicMailerHelper
def connected_subject(topic)
'new synapse to topic ' + topic.name
end
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module TopicsHelper
## this one is for building our custom JSON autocomplete format for typeahead
def autocomplete_array_json(topics)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module UsersHelper
# build custom json autocomplete for typeahead
def autocomplete_user_array_json(users)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class ApplicationMailer < ActionMailer::Base
default from: 'team@metamaps.cc'
layout 'mailer'
@ -6,24 +7,24 @@ class ApplicationMailer < ActionMailer::Base
class << self
def mail_for_notification(notification)
case notification.notification_code
when MAP_ACCESS_REQUEST
request = notification.notified_object
MapMailer.access_request(request)
when MAP_ACCESS_APPROVED
request = notification.notified_object
MapMailer.access_approved(request)
when MAP_INVITE_TO_EDIT
user_map = notification.notified_object
MapMailer.invite_to_edit(user_map)
when TOPIC_ADDED_TO_MAP
event = notification.notified_object
TopicMailer.added_to_map(event, notification.recipients[0])
when TOPIC_CONNECTED_1
synapse = notification.notified_object
TopicMailer.connected(synapse, synapse.topic1, notification.recipients[0])
when TOPIC_CONNECTED_2
synapse = notification.notified_object
TopicMailer.connected(synapse, synapse.topic2, notification.recipients[0])
when MAP_ACCESS_REQUEST
request = notification.notified_object
MapMailer.access_request(request)
when MAP_ACCESS_APPROVED
request = notification.notified_object
MapMailer.access_approved(request)
when MAP_INVITE_TO_EDIT
user_map = notification.notified_object
MapMailer.invite_to_edit(user_map)
when TOPIC_ADDED_TO_MAP
event = notification.notified_object
TopicMailer.added_to_map(event, notification.recipients[0])
when TOPIC_CONNECTED_1
synapse = notification.notified_object
TopicMailer.connected(synapse, synapse.topic1, notification.recipients[0])
when TOPIC_CONNECTED_2
synapse = notification.notified_object
TopicMailer.connected(synapse, synapse.topic2, notification.recipients[0])
end
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MapActivityMailer < ApplicationMailer
default from: 'team@metamaps.cc'

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MapMailer < ApplicationMailer
include MapMailerHelper
default from: 'team@metamaps.cc'

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class TopicMailer < ApplicationMailer
include TopicMailerHelper
default from: 'team@metamaps.cc'

View file

@ -1,9 +1,10 @@
# frozen_string_literal: true
class AccessRequest < ApplicationRecord
belongs_to :user
belongs_to :map
has_one :user_map
after_create :after_created_async
def approve
@ -27,9 +28,9 @@ class AccessRequest < ApplicationRecord
Mailboxer::Receipt.where(notification: notification).update_all(is_read: true)
end
end
protected
def after_created_async
NotificationService.access_request(self)
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Attachment < ApplicationRecord
belongs_to :attachable, polymorphic: true

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Attachable
extend ActiveSupport::Concern

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Routing
extend ActiveSupport::Concern
include Rails.application.routes.url_helpers

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Event < ApplicationRecord
KINDS = %w(user_present_on_map user_not_present_on_map
conversation_started_on_map

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class ConversationStartedOnMap < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class SynapseAddedToMap < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class SynapseRemovedFromMap < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class SynapseUpdated < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class TopicAddedToMap < Event
after_create :notify_users!
@ -10,7 +11,7 @@ module Events
user: user,
meta: meta)
end
def notify_users!
# in the future, notify followers of both the topic, and the map
NotificationService.notify_followers(eventable, TOPIC_ADDED_TO_MAP, self)

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class TopicMovedOnMap < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class TopicRemovedFromMap < Event
# after_create :notify_users!

View file

@ -1,7 +1,8 @@
# frozen_string_literal: true
module Events
class TopicUpdated < Event
#after_create :notify_users!
# after_create :notify_users!
def self.publish!(topic, user, meta)
create!(kind: 'topic_updated',
@ -9,7 +10,7 @@ module Events
user: user,
meta: meta)
end
def notify_users!
NotificationService.notify_followers(eventable, 'topic_updated', self)
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class UserNotPresentOnMap < Event
# after_create :notify_users!

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
module Events
class UserPresentOnMap < Event
# after_create :notify_users!

View file

@ -1,19 +1,19 @@
# frozen_string_literal: true
class Follow < ApplicationRecord
class Follow < ApplicationRecord
belongs_to :user
belongs_to :followed, polymorphic: true
has_one :follow_reason, dependent: :destroy
validates :user, presence: true
validates :followed, presence: true
validates :user, uniqueness: { scope: :followed, message: 'This entity is already followed by this user' }
after_create :add_subsetting
scope :active, -> {
where(muted: false)
}
}
private

View file

@ -1,12 +1,13 @@
# frozen_string_literal: true
class FollowReason < ApplicationRecord
REASONS = %w(created commented contributed followed shared_on starred).freeze
belongs_to :follow
validates :follow, presence: true
def has_reason
created || commented || contributed || followed || shared_on || starred
end
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class InMetacodeSet < ApplicationRecord
belongs_to :metacode, class_name: 'Metacode', foreign_key: 'metacode_id'
belongs_to :metacode_set, class_name: 'MetacodeSet', foreign_key: 'metacode_set_id'

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Map < ApplicationRecord
ATTRS_TO_WATCH = %w(name desc permission).freeze
@ -15,7 +16,7 @@ class Map < ApplicationRecord
has_many :messages, as: :resource, dependent: :destroy
has_many :stars, dependent: :destroy
has_many :follows, as: :followed, dependent: :destroy
has_many :followers, :through => :follows, source: :user
has_many :followers, through: :follows, source: :user
has_many :access_requests, dependent: :destroy
has_many :user_maps, dependent: :destroy
@ -89,10 +90,10 @@ class Map < ApplicationRecord
def as_json(_options = {})
json = super(
methods: [:user_name, :user_image, :star_count, :topic_count, :synapse_count,
:contributor_count, :collaborator_ids, :screenshot_url],
except: [:screenshot_content_type, :screenshot_file_size, :screenshot_file_name,
:screenshot_updated_at]
methods: %i(user_name user_image star_count topic_count synapse_count
contributor_count collaborator_ids screenshot_url),
except: %i(screenshot_content_type screenshot_file_size screenshot_file_name
screenshot_updated_at)
)
json[:created_at_clean] = created_at_str
json[:updated_at_clean] = updated_at_str
@ -133,16 +134,16 @@ class Map < ApplicationRecord
end
removed.compact
end
def update_deferring_topics_and_synapses
Topic.where(defer_to_map_id: id).update(permission: permission)
Synapse.where(defer_to_map_id: id).update(permission: permission)
end
protected
def after_created
FollowService.follow(self, self.user, 'created')
FollowService.follow(self, user, 'created')
# notify users following the map creator
end
@ -150,7 +151,7 @@ class Map < ApplicationRecord
return unless ATTRS_TO_WATCH.any? { |k| changed_attributes.key?(k) }
ActionCable.server.broadcast 'map_' + id.to_s, type: 'mapUpdated'
end
def after_updated_async
if ATTRS_TO_WATCH.any? { |k| changed_attributes.key?(k) }
FollowService.follow(self, updated_by, 'contributed')

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Mapping < ApplicationRecord
scope :topicmapping, -> { where(mappable_type: :Topic) }
scope :synapsemapping, -> { where(mappable_type: :Synapse) }
@ -24,7 +25,7 @@ class Mapping < ApplicationRecord
end
def as_json(_options = {})
super(methods: [:user_name, :user_image])
super(methods: %i(user_name user_image))
end
def after_created

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Message < ApplicationRecord
belongs_to :user
belongs_to :resource, polymorphic: true
@ -6,15 +7,14 @@ class Message < ApplicationRecord
delegate :name, to: :user, prefix: true
after_create :after_created
#after_create :after_created_async
# after_create :after_created_async
def user_image
user.image.url
end
def as_json(_options = {})
json = super(methods: [:user_name, :user_image])
json = super(methods: %i(user_name user_image))
json
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Metacode < ApplicationRecord
has_many :in_metacode_sets
has_many :metacode_sets, through: :in_metacode_sets

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class MetacodeSet < ApplicationRecord
belongs_to :user
has_many :in_metacode_sets

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class PermittedParams < Struct.new(:params)
%w(map synapse topic mapping token).each do |kind|
define_method(kind) do
@ -15,18 +16,18 @@ class PermittedParams < Struct.new(:params)
end
def map_attributes
[:name, :desc, :permission, :arranged]
%i(name desc permission arranged)
end
def synapse_attributes
[:desc, :category, :weight, :permission, :topic1_id, :topic2_id]
%i(desc category weight permission topic1_id topic2_id)
end
def topic_attributes
[:name, :desc, :link, :permission, :metacode_id]
%i(name desc link permission metacode_id)
end
def mapping_attributes
[:xloc, :yloc, :map_id, :mappable_type, :mappable_id]
%i(xloc yloc map_id mappable_type mappable_id)
end
end

View file

@ -1,20 +1,21 @@
# frozen_string_literal: true
class Star < ActiveRecord::Base
class Star < ApplicationRecord
belongs_to :user
belongs_to :map
validates :map, uniqueness: { scope: :user, message: 'You have already starred this map' }
#after_create :after_created_async
#before_destroy :before_destroyed
# after_create :after_created_async
# before_destroy :before_destroyed
protected
def after_created_async
FollowService.follow(map, user, 'starred')
NotificationService.notify_followers(map, 'map_starred', self, 'created')
end
handle_asynchronously :after_created_async
def before_destroyed
FollowService.remove_reason(map, user, 'starred')
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Synapse < ApplicationRecord
ATTRS_TO_WATCH = %w(desc category permission defer_to_map_id).freeze
@ -38,7 +39,7 @@ class Synapse < ApplicationRecord
def collaborator_ids
if defer_to_map
defer_to_map.editors.select { |mapper| mapper != user }.map(&:id)
defer_to_map.editors.reject { |mapper| mapper == user }.map(&:id)
else
[]
end
@ -54,7 +55,7 @@ class Synapse < ApplicationRecord
end
def as_json(_options = {})
super(methods: [:user_name, :user_image, :collaborator_ids])
super(methods: %i(user_name user_image collaborator_ids))
end
def as_rdf
@ -96,7 +97,7 @@ class Synapse < ApplicationRecord
def before_destroyed
# hard to know how to do this yet, because the synapse actually gets destroyed
#NotificationService.notify_followers(topic1, 'topic_disconnected', self)
#NotificationService.notify_followers(topic2, 'topic_disconnected', self)
# NotificationService.notify_followers(topic1, 'topic_disconnected', self)
# NotificationService.notify_followers(topic2, 'topic_disconnected', self)
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Token < ApplicationRecord
belongs_to :user

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Topic < ApplicationRecord
ATTRS_TO_WATCH = %w(name desc link metacode_id permission defer_to_map_id).freeze
include TopicsHelper
@ -16,7 +17,7 @@ class Topic < ApplicationRecord
has_many :mappings, as: :mappable, dependent: :destroy
has_many :maps, through: :mappings
has_many :follows, as: :followed, dependent: :destroy
has_many :followers, :through => :follows, source: :user
has_many :followers, through: :follows, source: :user
belongs_to :metacode
@ -25,7 +26,7 @@ class Topic < ApplicationRecord
after_create :after_created_async
after_update :after_updated
after_update :after_updated_async
#before_destroy :before_destroyed
# before_destroy :before_destroyed
validates :permission, presence: true
validates :permission, inclusion: { in: Perm::ISSIONS.map(&:to_s) }
@ -69,7 +70,7 @@ class Topic < ApplicationRecord
end
def as_json(options = {})
super(methods: [:user_name, :user_image, :collaborator_ids])
super(methods: %i(user_name user_image collaborator_ids))
.merge(inmaps: inmaps(options[:user]), inmapsLinks: inmapsLinks(options[:user]),
map_count: map_count(options[:user]), synapse_count: synapse_count(options[:user]))
end
@ -89,7 +90,7 @@ class Topic < ApplicationRecord
def collaborator_ids
if defer_to_map
defer_to_map.editors.select { |mapper| mapper != user }.map(&:id)
defer_to_map.editors.reject { |mapper| mapper == user }.map(&:id)
else
[]
end
@ -154,9 +155,9 @@ class Topic < ApplicationRecord
self.link = Rails.application.routes.url_helpers
.map_url(host: ENV['MAILER_DEFAULT_URL'], id: @map.id)
end
def after_created_async
FollowService.follow(self, self.user, 'created')
FollowService.follow(self, user, 'created')
# notify users following the topic creator
end
handle_asynchronously :after_created_async
@ -173,7 +174,7 @@ class Topic < ApplicationRecord
end
end
end
def after_updated_async
if ATTRS_TO_WATCH.any? { |k| changed_attributes.key?(k) }
FollowService.follow(self, updated_by, 'contributed')
@ -183,6 +184,6 @@ class Topic < ApplicationRecord
def before_destroyed
# hard to know how to do this yet, because the topic actually gets destroyed
#NotificationService.notify_followers(self, 'topic_deleted', ?)
# NotificationService.notify_followers(self, 'topic_deleted', ?)
end
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
require 'open-uri'
class User < ApplicationRecord
@ -53,24 +54,22 @@ class User < ApplicationRecord
# override default as_json
def as_json(_options = {})
json = { id: id,
name: name,
image: image.url(:sixtyfour),
admin: admin }
if (_options[:follows])
name: name,
image: image.url(:sixtyfour),
admin: admin }
if _options[:follows]
json['follows'] = {
topics: following.active.where(followed_type: 'Topic').to_a.map(&:followed_id),
maps: following.active.where(followed_type: 'Map').to_a.map(&:followed_id)
}
end
if (_options[:follow_settings])
json['follow_topic_on_created'] = settings.follow_topic_on_created == "1"
json['follow_topic_on_contributed'] = settings.follow_topic_on_contributed == "1"
json['follow_map_on_created'] = settings.follow_map_on_created == "1"
json['follow_map_on_contributed'] = settings.follow_map_on_contributed == "1"
end
if (_options[:email])
json['email'] = email
if _options[:follow_settings]
json['follow_topic_on_created'] = settings.follow_topic_on_created == '1'
json['follow_topic_on_contributed'] = settings.follow_topic_on_contributed == '1'
json['follow_map_on_created'] = settings.follow_map_on_created == '1'
json['follow_map_on_contributed'] = settings.follow_map_on_contributed == '1'
end
json['email'] = email if _options[:email]
json
end
@ -134,19 +133,19 @@ class User < ApplicationRecord
def has_map_open(map)
latestEvent = Event.where(map: map, user: self)
.where(kind: ['user_present_on_map', 'user_not_present_on_map'])
.where(kind: %w(user_present_on_map user_not_present_on_map))
.order(:created_at)
.last
latestEvent && latestEvent.kind == 'user_present_on_map'
end
def has_map_with_synapse_open(synapse)
synapse.maps.any?{|map| has_map_open(map)}
synapse.maps.any? { |map| has_map_open(map) }
end
def settings
self[:settings] = UserPreference.new if self[:settings].nil?
if not self[:settings].respond_to?(:follow_topic_on_created)
unless self[:settings].respond_to?(:follow_topic_on_created)
self[:settings].initialize_follow_settings
end
self[:settings]

View file

@ -1,9 +1,10 @@
# frozen_string_literal: true
class UserMap < ApplicationRecord
belongs_to :map
belongs_to :user
belongs_to :access_request
after_create :after_created_async
before_destroy :before_destroyed
@ -12,20 +13,20 @@ class UserMap < ApplicationRecord
Mailboxer::Receipt.where(notification: notification).update_all(is_read: true)
end
end
protected
def after_created_async
FollowService.follow(map, user, 'shared_on')
if access_request
NotificationService.access_approved(self.access_request)
NotificationService.access_approved(access_request)
else
NotificationService.invite_to_edit(self)
end
# NotificationService.notify_followers(map, 'map_collaborator_added', self, 'shared_on')
end
handle_asynchronously :after_created_async
def before_destroyed
FollowService.remove_reason(map, user, 'shared_on')
end

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class UserPreference
attr_accessor :metacodes, :metacode_focus, :follow_topic_on_created, :follow_topic_on_contributed,
:follow_map_on_created, :follow_map_on_contributed

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhook < ApplicationRecord
belongs_to :hookable, polymorphic: true

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
Webhooks::Slack::Base = Struct.new(:webhook, :event) do
include Routing

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::ConversationStartedOnMap < Webhooks::Slack::Base
def text
"There is a live conversation starting on map *#{event.map.name}*. #{view_map_on_metamaps('Join in!')}"

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::SynapseAddedToMap < Webhooks::Slack::Base
def text
connector = eventable.desc.empty? ? '->' : eventable.desc

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::SynapseRemovedFromMap < Webhooks::Slack::Base
def text
connector = eventable.desc.empty? ? '->' : eventable.desc

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::TopicAddedToMap < Webhooks::Slack::Base
def text
"*#{eventable.name}* was added by *#{event.user.name}* to the map *#{view_map_on_metamaps}*"

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::TopicMovedOnMap < Webhooks::Slack::Base
def text
"*#{eventable.name}* was moved by *#{event.user.name}* on the map *#{view_map_on_metamaps}*"

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::TopicRemovedFromMap < Webhooks::Slack::Base
def text
"*#{eventable.name}* was removed by *#{event.user.name}* from the map *#{view_map_on_metamaps}*"

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class Webhooks::Slack::UserPresentOnMap < Webhooks::Slack::Base
def text
"Mapper *#{event.user.name}* has joined the map *#{event.map.name}*. #{view_map_on_metamaps('Map with them')}"

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class ApplicationPolicy
attr_reader :user, :record

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class ExplorePolicy < ApplicationPolicy
def active?
true

View file

@ -1,4 +1,5 @@
# frozen_string_literal: true
class HackPolicy < ApplicationPolicy
def load_url_title?
true

Some files were not shown because too many files have changed in this diff Show more