diff --git a/Changelog.md b/Changelog.md index 83775cfc4..f6c9fe534 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,7 @@ ## Refactor * Background actual mailing when sending invitations [#4069](https://github.com/diaspora/diaspora/issues/4069) +* Set the current user on the client side through gon [#4028](https://github.com/diaspora/diaspora/issues/4028) ## Bug fixes * Don't focus comment form on 'show n more comments' [#4265](https://github.com/diaspora/diaspora/issues/4265) diff --git a/app/assets/javascripts/app/app.js b/app/assets/javascripts/app/app.js index c268d8e1b..240c44f3e 100644 --- a/app/assets/javascripts/app/app.js +++ b/app/assets/javascripts/app/app.js @@ -34,11 +34,11 @@ var app = { initialize: function() { app.router = new app.Router(); - var currentUser = false; - if (window.preloads != undefined) { - currentUser = app.user(window.preloads.user) + if (window.gon == undefined) { + window.gon = {preloads:{}}; } - app.currentUser = currentUser || new app.models.User(); + + app.currentUser = app.user(window.gon.user) || new app.models.User(); if(app.currentUser.authenticated()){ app.header = new app.views.Header(); @@ -63,19 +63,19 @@ var app = { }, hasPreload : function(prop) { - return !!(window.preloads && window.preloads[prop]) //returning boolean variable so that parsePreloads, which cleans up properly is used instead + return !!(window.gon.preloads && window.gon.preloads[prop]) //returning boolean variable so that parsePreloads, which cleans up properly is used instead }, setPreload : function(prop, val) { - window.preloads = window.preloads || {} - window.preloads[prop] = val + window.gon.preloads = window.gon.preloads || {} + window.gon.preloads[prop] = val }, parsePreload : function(prop){ if(!app.hasPreload(prop)) { return } - var preload = window.preloads[prop] - delete window.preloads[prop] //prevent dirty state across navigates + var preload = window.gon.preloads[prop] + delete window.gon.preloads[prop] //prevent dirty state across navigates return(preload) }, diff --git a/app/assets/javascripts/app/router.js b/app/assets/javascripts/app/router.js index 4f143aa9d..0d29cd9c8 100644 --- a/app/assets/javascripts/app/router.js +++ b/app/assets/javascripts/app/router.js @@ -34,7 +34,7 @@ app.Router = Backbone.Router.extend({ post.fetch({url : window.location}) function setPreloadAttributesAndNavigate(){ - window.preloads.post = post.attributes + window.gon.preloads.post = post.attributes app.router.navigate(post.url(), {trigger:true, replace: true}) } }, @@ -73,7 +73,7 @@ app.Router = Backbone.Router.extend({ $("#tags_list").replaceWith(followedTagsView.render().el); followedTagsView.setupAutoSuggest(); - app.tagFollowings.reset(preloads.tagFollowings); + app.tagFollowings.reset(gon.preloads.tagFollowings); if(name) { var followedTagsAction = new app.views.TagFollowingAction( diff --git a/app/assets/javascripts/mobile.js b/app/assets/javascripts/mobile.js index 46b2d7168..83f787d95 100644 --- a/app/assets/javascripts/mobile.js +++ b/app/assets/javascripts/mobile.js @@ -276,7 +276,7 @@ $(document).ready(function(){ function createUploader(){ - var aspectIds = gon.aspect_ids; + var aspectIds = gon.preloads.aspect_ids; var uploader = new qq.FileUploaderBasic({ element: document.getElementById('file-upload-publisher'), diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index cc5ceadbb..780852ab4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -11,7 +11,8 @@ class ApplicationController < ActionController::Base before_filter :set_diaspora_header before_filter :set_grammatical_gender before_filter :mobile_switch - before_filter :set_current_user_in_javascript + before_filter :gon_set_current_user + before_filter :gon_set_preloads inflection_method :grammatical_gender => :gender @@ -138,11 +139,16 @@ class ApplicationController < ActionController::Base current_user.getting_started? ? getting_started_path : stream_path end - def set_current_user_in_javascript + def gon_set_current_user return unless user_signed_in? a_ids = session[:a_ids] || [] user = UserPresenter.new(current_user, a_ids) gon.push({:user => user}) end + def gon_set_preloads + return unless gon.preloads.nil? + gon.preloads = {} + end + end diff --git a/app/controllers/streams_controller.rb b/app/controllers/streams_controller.rb index 7c4484f51..6ce788a17 100644 --- a/app/controllers/streams_controller.rb +++ b/app/controllers/streams_controller.rb @@ -43,7 +43,7 @@ class StreamsController < ApplicationController end def followed_tags - gon.tagFollowings = tags + gon.preloads[:tagFollowings] = tags stream_responder(Stream::FollowedTag) end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 2729268ef..86b095975 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -33,7 +33,7 @@ class TagsController < ApplicationController redirect_to(:action => :show, :name => downcased_tag_name) && return if tag_has_capitals? if user_signed_in? - gon.tagFollowings = tags + gon.preloads[:tagFollowings] = tags end @stream = Stream::Tag.new(current_user, params[:name], :max_time => max_time, :page => params[:page]) respond_with do |format| diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml index f7ecb1084..fb788d0a1 100644 --- a/app/views/layouts/application.html.haml +++ b/app/views/layouts/application.html.haml @@ -53,7 +53,7 @@ %link{:rel => 'alternate', :type => "application/json+oembed", :href => "#{oembed_url(:url => post_url(@post))}"} = og_page_specific_tags(@post) - = include_gon(:camel_case => true, :namespace => :preloads) + = include_gon(:camel_case => true) %body = flash_messages diff --git a/spec/javascripts/app/views/post/small_frame_view_spec.js b/spec/javascripts/app/views/post/small_frame_view_spec.js index d6b83e36d..c4e022cb1 100644 --- a/spec/javascripts/app/views/post/small_frame_view_spec.js +++ b/spec/javascripts/app/views/post/small_frame_view_spec.js @@ -40,7 +40,7 @@ describe("app.views.Post.SmallFrame", function(){ beforeEach(function(){ app.page = { editMode : false } app.router = new app.Router() - window.preloads = {} + window.gon.preloads = {} spyOn(app.router, "navigate") })