diff --git a/app/controllers/react_controller.rb b/app/controllers/react_controller.rb index d4642a6c..bdba3e87 100644 --- a/app/controllers/react_controller.rb +++ b/app/controllers/react_controller.rb @@ -1,14 +1,28 @@ # frozen_string_literal: true class ReactController < ApplicationController - before_action :authenticate_user!, only: :react - before_action :set_referrer_policy_header, only: :react - before_action :set_initial_state_json, only: :react - before_action :set_data_for_meta, only: :react + before_action :authenticate_user!, only: [:react, :home] + before_action :set_referrer_policy_header, only: [:react, :home] + before_action :set_initial_state_json, only: [:react, :home] + before_action :set_data_for_meta, only: [:react, :home] + before_action :set_instance_presenter def react - # + # + end + + def home + # + end + + def groupBySlug + @group = Group.where(slug: params[:groupSlug], is_archived: false).first + unless @group.nil? + return redirect_to "/groups/#{@group.id}" + end + + return not_found end private @@ -21,35 +35,37 @@ class ReactController < ApplicationController @group = Group.where(id: groupIdFromPath, is_archived: false).first elsif find_public_route_matches return + elsif request.path.count("/") == 1 && request.path.length === 1 + # elsif request.path.count("/") == 1 && !request.path.include?("@") acctFromPath = request.path.sub("/", "") @account = Account.find_local!(acctFromPath) end - end def authenticate_user! return if user_signed_in? - if find_public_route_matches return elsif find_route_matches # if no current user, dont allow to navigate to these paths redirect_to(homepage_path) end + + return false end def find_route_matches - request.path.match(/\A\/(home|shortcuts|group|groups|list|lists|notifications|tags|compose|follow_requests|admin|account|settings|filters|timeline|blocks|domain_blocks|mutes)/) + request.path.match(/\A\/(home|news|shortcuts|group|groups|list|lists|notifications|tags|compose|follow_requests|admin|account|settings|filters|timeline|blocks|domain_blocks|mutes)/) end def find_public_route_matches - request.path.match(/\A\/(about|search|groups|explore)/) + request.path.match(/\A\/(about|news|search|groups|explore)/) end def set_initial_state_json serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer) - @initial_state_json = serializable_resource.to_json + @initial_state_json = serializable_resource.to_json end def initial_state_params diff --git a/app/views/react/home.html.haml b/app/views/react/home.html.haml new file mode 100644 index 00000000..84f265f9 --- /dev/null +++ b/app/views/react/home.html.haml @@ -0,0 +1,12 @@ +- content_for :header_tags do + %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key} + %script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json) + + = javascript_pack_tag 'application', integrity: true, crossorigin: 'anonymous' + +#gabsocial{ data: { props: Oj.dump(default_props) } } + %noscript + %div{ :style => "padding: 60px; max-width: 560px;" } + = image_pack_tag 'logo.svg', alt: 'Gab Social', width: '100px' + %div{ :style => "margin-top: 20px; line-height: 2rem; font-family: system-ui, -apple-system, BlinkMacSystemFont, Roboto, sans-serif;" } + = t('errors.noscript_html', apps_path: 'https://apps.gab.com') diff --git a/config/routes.rb b/config/routes.rb index 59ea7573..5bebf236 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -465,9 +465,9 @@ Rails.application.routes.draw do end end - get '/', to: 'about#show', as: :homepage + get '/', to: 'react#home', as: :homepage - get '/tags/:tag', to: 'react#react' + get '/g/:groupSlug', to: 'react#groupBySlug' get '/:username/with_replies', to: 'accounts#show', username: username_regex, as: :short_account_with_replies get '/:username/comments_only', to: 'accounts#show', username: username_regex, as: :short_account_comments_only get '/:username/media', to: 'accounts#show', username: username_regex, as: :short_account_media