Merge branch 'next-minor' into develop
This commit is contained in:
commit
4902a35972
26 changed files with 417 additions and 214 deletions
|
|
@ -48,6 +48,9 @@ Although the chat was never enabled per default and was marked as experimental,
|
||||||
|
|
||||||
## Bug fixes
|
## Bug fixes
|
||||||
* Ensure the log folder exists [#8287](https://github.com/diaspora/diaspora/pull/8287)
|
* Ensure the log folder exists [#8287](https://github.com/diaspora/diaspora/pull/8287)
|
||||||
|
* Limit name length in header [#8313] (https://github.com/diaspora/diaspora/pull/8313)
|
||||||
|
* Fix fallback avatar in hovercards [#8316](https://github.com/diaspora/diaspora/pull/8316)
|
||||||
|
* Use old person private key for export if relayable author migrated away [#8310](https://github.com/diaspora/diaspora/pull/8310)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
* Add tags to tumblr posts [#8244](https://github.com/diaspora/diaspora/pull/8244)
|
* Add tags to tumblr posts [#8244](https://github.com/diaspora/diaspora/pull/8244)
|
||||||
|
|
@ -58,6 +61,8 @@ Although the chat was never enabled per default and was marked as experimental,
|
||||||
* Add podmin mail address to the footer [#8242](https://github.com/diaspora/diaspora/pull/8242)
|
* Add podmin mail address to the footer [#8242](https://github.com/diaspora/diaspora/pull/8242)
|
||||||
* Add username to password-reset mail [#8037](https://github.com/diaspora/diaspora/pull/8037)
|
* Add username to password-reset mail [#8037](https://github.com/diaspora/diaspora/pull/8037)
|
||||||
* Resend account migration and deletion for closed recipients [#8309](https://github.com/diaspora/diaspora/pull/8309)
|
* Resend account migration and deletion for closed recipients [#8309](https://github.com/diaspora/diaspora/pull/8309)
|
||||||
|
* Add sharing status to hovercards [#8317](https://github.com/diaspora/diaspora/pull/8317)
|
||||||
|
* Migrate photo URLs and cleanup old uploaded photos [#8314](https://github.com/diaspora/diaspora/pull/8314)
|
||||||
|
|
||||||
# 0.7.15.0
|
# 0.7.15.0
|
||||||
|
|
||||||
|
|
|
||||||
51
Gemfile
51
Gemfile
|
|
@ -29,8 +29,8 @@ gem "yajl-ruby", "1.4.1"
|
||||||
|
|
||||||
gem "devise", "4.8.0"
|
gem "devise", "4.8.0"
|
||||||
gem "devise_lastseenable", "0.0.6"
|
gem "devise_lastseenable", "0.0.6"
|
||||||
gem "devise-two-factor", "4.0.0"
|
gem "devise-two-factor", "4.0.1"
|
||||||
gem "rqrcode", "2.0.0"
|
gem "rqrcode", "2.1.0"
|
||||||
|
|
||||||
# Captcha
|
# Captcha
|
||||||
|
|
||||||
|
|
@ -38,8 +38,8 @@ gem "simple_captcha2", "0.5.0", require: "simple_captcha"
|
||||||
|
|
||||||
# Background processing
|
# Background processing
|
||||||
|
|
||||||
gem "redis", "4.3.1"
|
gem "redis", "4.5.1"
|
||||||
gem "sidekiq", "6.2.1"
|
gem "sidekiq", "6.2.2"
|
||||||
|
|
||||||
# Scheduled processing
|
# Scheduled processing
|
||||||
|
|
||||||
|
|
@ -47,12 +47,12 @@ gem "sidekiq-cron", "1.2.0"
|
||||||
|
|
||||||
# Compression
|
# Compression
|
||||||
|
|
||||||
gem "terser", "1.1.5"
|
gem "terser", "1.1.7"
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
|
||||||
gem "configurate", "0.5.0"
|
gem "configurate", "0.5.0"
|
||||||
gem "toml-rb", "2.0.1"
|
gem "toml-rb", "2.1.0"
|
||||||
|
|
||||||
# Cross-origin resource sharing
|
# Cross-origin resource sharing
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ gem "rack-cors", "1.1.1", require: "rack/cors"
|
||||||
|
|
||||||
# CSS
|
# CSS
|
||||||
|
|
||||||
gem "autoprefixer-rails", "10.2.5.1"
|
gem "autoprefixer-rails", "10.3.3.0"
|
||||||
gem "bootstrap-sass", "3.4.1"
|
gem "bootstrap-sass", "3.4.1"
|
||||||
gem "bootstrap-switch-rails", "3.3.3" # 3.3.4 and 3.3.5 is broken, see https://github.com/Bttstrp/bootstrap-switch/issues/691
|
gem "bootstrap-switch-rails", "3.3.3" # 3.3.4 and 3.3.5 is broken, see https://github.com/Bttstrp/bootstrap-switch/issues/691
|
||||||
gem "compass-rails", "3.1.0"
|
gem "compass-rails", "3.1.0"
|
||||||
|
|
@ -81,7 +81,7 @@ gem "activerecord-import", "1.1.0"
|
||||||
# File uploading
|
# File uploading
|
||||||
|
|
||||||
gem "carrierwave", "2.2.2"
|
gem "carrierwave", "2.2.2"
|
||||||
gem "fog-aws", "3.10.0"
|
gem "fog-aws", "3.12.0"
|
||||||
gem "mini_magick", "4.11.0"
|
gem "mini_magick", "4.11.0"
|
||||||
|
|
||||||
# GUID generation
|
# GUID generation
|
||||||
|
|
@ -96,7 +96,7 @@ gem "entypo-rails", "3.0.0"
|
||||||
gem "handlebars_assets", "0.23.9"
|
gem "handlebars_assets", "0.23.9"
|
||||||
gem "jquery-rails", "4.4.0"
|
gem "jquery-rails", "4.4.0"
|
||||||
gem "jquery-ui-rails", "5.0.5"
|
gem "jquery-ui-rails", "5.0.5"
|
||||||
gem "js-routes", "1.4.14"
|
gem "js-routes", "2.1.2"
|
||||||
gem "js_image_paths", "0.1.1"
|
gem "js_image_paths", "0.1.1"
|
||||||
gem "sprockets-es6", "0.9.2"
|
gem "sprockets-es6", "0.9.2"
|
||||||
|
|
||||||
|
|
@ -147,7 +147,7 @@ gem "leaflet-rails", "1.7.0"
|
||||||
|
|
||||||
# Parsing
|
# Parsing
|
||||||
|
|
||||||
gem "nokogiri", "1.11.7"
|
gem "nokogiri", "1.12.5"
|
||||||
gem "open_graph_reader", "0.7.2" # also update User-Agent in features/support/webmock.rb and open_graph_cache_spec.rb
|
gem "open_graph_reader", "0.7.2" # also update User-Agent in features/support/webmock.rb and open_graph_cache_spec.rb
|
||||||
gem "redcarpet", "3.5.1"
|
gem "redcarpet", "3.5.1"
|
||||||
gem "ruby-oembed", "0.15.0"
|
gem "ruby-oembed", "0.15.0"
|
||||||
|
|
@ -159,18 +159,19 @@ gem "string-direction", "1.2.2"
|
||||||
|
|
||||||
# Security Headers
|
# Security Headers
|
||||||
|
|
||||||
gem "secure_headers", "6.3.2"
|
gem "secure_headers", "6.3.3"
|
||||||
|
|
||||||
# Services
|
# Services
|
||||||
|
|
||||||
gem "omniauth", "1.9.1"
|
gem "omniauth", "2.0.4"
|
||||||
|
gem "omniauth-rails_csrf_protection", "1.0.0"
|
||||||
gem "omniauth-tumblr", "1.2"
|
gem "omniauth-tumblr", "1.2"
|
||||||
gem "omniauth-twitter", "1.4.0"
|
gem "omniauth-twitter", "1.4.0"
|
||||||
gem "omniauth-wordpress", "0.2.2"
|
gem "omniauth-wordpress", "0.2.2"
|
||||||
gem "twitter", "7.0.0"
|
gem "twitter", "7.0.0"
|
||||||
|
|
||||||
# OpenID Connect
|
# OpenID Connect
|
||||||
gem "openid_connect", "1.2.0"
|
gem "openid_connect", "1.3.0"
|
||||||
|
|
||||||
# Serializers
|
# Serializers
|
||||||
|
|
||||||
|
|
@ -182,19 +183,19 @@ gem "acts-as-taggable-on", "8.1.0"
|
||||||
|
|
||||||
# URIs and HTTP
|
# URIs and HTTP
|
||||||
|
|
||||||
gem "addressable", "2.7.0", require: "addressable/uri"
|
gem "addressable", "2.8.0", require: "addressable/uri"
|
||||||
gem "faraday", "0.17.4"
|
gem "faraday", "0.17.4"
|
||||||
gem "faraday_middleware", "0.13.1"
|
gem "faraday-cookie_jar", "0.0.7"
|
||||||
gem "faraday-cookie_jar", "0.0.6"
|
gem "faraday_middleware", "0.14.0"
|
||||||
gem "typhoeus", "1.4.0"
|
gem "typhoeus", "1.4.0"
|
||||||
|
|
||||||
# Views
|
# Views
|
||||||
|
|
||||||
gem "gon", "6.4.0"
|
gem "gon", "6.4.0"
|
||||||
gem "hamlit", "2.15.0"
|
gem "hamlit", "2.15.1"
|
||||||
gem "mobile-fu", "1.4.0"
|
gem "mobile-fu", "1.4.0"
|
||||||
gem "rails-timeago", "2.19.1"
|
gem "rails-timeago", "2.19.1"
|
||||||
gem "will_paginate", "3.3.0"
|
gem "will_paginate", "3.3.1"
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
|
|
||||||
|
|
@ -202,7 +203,7 @@ gem "logging-rails", "0.6.0", require: "logging/rails"
|
||||||
|
|
||||||
# Reading and writing zip files
|
# Reading and writing zip files
|
||||||
|
|
||||||
gem "rubyzip", "2.3.0", require: "zip"
|
gem "rubyzip", "2.3.2", require: "zip"
|
||||||
|
|
||||||
# Prevent occasions where minitest is not bundled in
|
# Prevent occasions where minitest is not bundled in
|
||||||
# packaged versions of ruby. See following issues/prs:
|
# packaged versions of ruby. See following issues/prs:
|
||||||
|
|
@ -237,7 +238,7 @@ group :production do # we don"t install these on travis to speed up test runs
|
||||||
|
|
||||||
# Third party asset hosting
|
# Third party asset hosting
|
||||||
|
|
||||||
gem "asset_sync", "2.14.2", require: false
|
gem "asset_sync", "2.15.0", require: false
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development do
|
group :development do
|
||||||
|
|
@ -275,7 +276,7 @@ group :test do
|
||||||
|
|
||||||
gem "apparition", "0.6.0"
|
gem "apparition", "0.6.0"
|
||||||
gem "capybara", "3.35.3"
|
gem "capybara", "3.35.3"
|
||||||
gem "database_cleaner-active_record", "1.8.0"
|
gem "database_cleaner-active_record", "2.0.1"
|
||||||
|
|
||||||
gem "cucumber-api-steps", "0.14", require: false
|
gem "cucumber-api-steps", "0.14", require: false
|
||||||
|
|
||||||
|
|
@ -284,21 +285,21 @@ group :test do
|
||||||
gem "factory_bot_rails", "6.1.0"
|
gem "factory_bot_rails", "6.1.0"
|
||||||
gem "shoulda-matchers", "4.5.1"
|
gem "shoulda-matchers", "4.5.1"
|
||||||
gem "timecop", "0.9.4"
|
gem "timecop", "0.9.4"
|
||||||
gem "webmock", "3.13.0", require: false
|
gem "webmock", "3.14.0", require: false
|
||||||
|
|
||||||
gem "diaspora_federation-test", "0.2.7"
|
gem "diaspora_federation-test", "0.2.7"
|
||||||
end
|
end
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
# RSpec (unit tests, some integration tests)
|
# RSpec (unit tests, some integration tests)
|
||||||
gem "rspec-rails", "5.0.1"
|
gem "rspec-rails", "5.0.2"
|
||||||
|
|
||||||
# Cucumber (integration tests)
|
# Cucumber (integration tests)
|
||||||
gem "cucumber-rails", "2.3.0", require: false
|
gem "cucumber-rails", "2.4.0", require: false
|
||||||
|
|
||||||
# Jasmine (client side application tests (JS))
|
# Jasmine (client side application tests (JS))
|
||||||
gem "chrome_remote", "0.3.0"
|
gem "chrome_remote", "0.3.0"
|
||||||
gem "jasmine", "3.7.0"
|
gem "jasmine", "3.10.0"
|
||||||
gem "jasmine-jquery-rails", "2.0.3"
|
gem "jasmine-jquery-rails", "2.0.3"
|
||||||
gem "rails-assets-jasmine-ajax", "4.0.0", source: "https://gems.diasporafoundation.org"
|
gem "rails-assets-jasmine-ajax", "4.0.0", source: "https://gems.diasporafoundation.org"
|
||||||
gem "sinon-rails", "1.15.0"
|
gem "sinon-rails", "1.15.0"
|
||||||
|
|
|
||||||
257
Gemfile.lock
257
Gemfile.lock
|
|
@ -54,14 +54,14 @@ GEM
|
||||||
activemodel (>= 3.0.0)
|
activemodel (>= 3.0.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
rack (>= 1.1.0)
|
rack (>= 1.1.0)
|
||||||
addressable (2.7.0)
|
addressable (2.8.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
aes_key_wrap (1.1.0)
|
aes_key_wrap (1.1.0)
|
||||||
apparition (0.6.0)
|
apparition (0.6.0)
|
||||||
capybara (~> 3.13, < 4)
|
capybara (~> 3.13, < 4)
|
||||||
websocket-driver (>= 0.6.5)
|
websocket-driver (>= 0.6.5)
|
||||||
arel (9.0.0)
|
arel (9.0.0)
|
||||||
asset_sync (2.14.2)
|
asset_sync (2.15.0)
|
||||||
activemodel (>= 4.1.0)
|
activemodel (>= 4.1.0)
|
||||||
fog-core
|
fog-core
|
||||||
mime-types (>= 2.99)
|
mime-types (>= 2.99)
|
||||||
|
|
@ -70,8 +70,8 @@ GEM
|
||||||
attr_encrypted (3.1.0)
|
attr_encrypted (3.1.0)
|
||||||
encryptor (~> 3.0.0)
|
encryptor (~> 3.0.0)
|
||||||
attr_required (1.0.1)
|
attr_required (1.0.1)
|
||||||
autoprefixer-rails (10.2.5.1)
|
autoprefixer-rails (10.3.3.0)
|
||||||
execjs (> 0)
|
execjs (~> 2)
|
||||||
babel-source (5.8.35)
|
babel-source (5.8.35)
|
||||||
babel-transpiler (0.7.0)
|
babel-transpiler (0.7.0)
|
||||||
babel-source (>= 4.0, < 6)
|
babel-source (>= 4.0, < 6)
|
||||||
|
|
@ -149,57 +149,59 @@ GEM
|
||||||
crack (0.4.5)
|
crack (0.4.5)
|
||||||
rexml
|
rexml
|
||||||
crass (1.0.6)
|
crass (1.0.6)
|
||||||
cucumber (5.3.0)
|
cucumber (7.1.0)
|
||||||
builder (~> 3.2, >= 3.2.4)
|
builder (~> 3.2, >= 3.2.4)
|
||||||
cucumber-core (~> 8.0, >= 8.0.1)
|
cucumber-core (~> 10.1, >= 10.1.0)
|
||||||
cucumber-create-meta (~> 2.0, >= 2.0.2)
|
cucumber-create-meta (~> 6.0, >= 6.0.1)
|
||||||
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
|
||||||
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
cucumber-gherkin (~> 22.0, >= 22.0.0)
|
||||||
cucumber-html-formatter (~> 9.0, >= 9.0.0)
|
cucumber-html-formatter (~> 17.0, >= 17.0.0)
|
||||||
cucumber-messages (~> 13.1, >= 13.1.0)
|
cucumber-messages (~> 17.1, >= 17.1.1)
|
||||||
cucumber-wire (~> 4.0, >= 4.0.1)
|
cucumber-wire (~> 6.2, >= 6.2.0)
|
||||||
diff-lcs (~> 1.4, >= 1.4.4)
|
diff-lcs (~> 1.4, >= 1.4.4)
|
||||||
|
mime-types (~> 3.3, >= 3.3.1)
|
||||||
multi_test (~> 0.1, >= 0.1.2)
|
multi_test (~> 0.1, >= 0.1.2)
|
||||||
sys-uname (~> 1.2, >= 1.2.1)
|
sys-uname (~> 1.2, >= 1.2.2)
|
||||||
cucumber-api-steps (0.14.0)
|
cucumber-api-steps (0.14.0)
|
||||||
cucumber (>= 2.0.2)
|
cucumber (>= 2.0.2)
|
||||||
jsonpath (>= 0.1.2)
|
jsonpath (>= 0.1.2)
|
||||||
cucumber-core (8.0.1)
|
cucumber-core (10.1.0)
|
||||||
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
cucumber-gherkin (~> 22.0, >= 22.0.0)
|
||||||
cucumber-messages (~> 13.0, >= 13.0.1)
|
cucumber-messages (~> 17.1, >= 17.1.1)
|
||||||
cucumber-tag-expressions (~> 2.0, >= 2.0.4)
|
cucumber-tag-expressions (~> 4.0, >= 4.0.2)
|
||||||
cucumber-create-meta (2.0.4)
|
cucumber-create-meta (6.0.2)
|
||||||
cucumber-messages (~> 13.1, >= 13.1.0)
|
cucumber-messages (~> 17.1, >= 17.1.1)
|
||||||
sys-uname (~> 1.2, >= 1.2.1)
|
sys-uname (~> 1.2, >= 1.2.2)
|
||||||
cucumber-cucumber-expressions (10.3.0)
|
cucumber-cucumber-expressions (14.0.0)
|
||||||
cucumber-gherkin (15.0.2)
|
cucumber-gherkin (22.0.0)
|
||||||
cucumber-messages (~> 13.0, >= 13.0.1)
|
cucumber-messages (~> 17.1, >= 17.1.1)
|
||||||
cucumber-html-formatter (9.0.0)
|
cucumber-html-formatter (17.0.0)
|
||||||
cucumber-messages (~> 13.0, >= 13.0.1)
|
cucumber-messages (~> 17.1, >= 17.1.0)
|
||||||
cucumber-messages (13.2.1)
|
cucumber-messages (17.1.1)
|
||||||
protobuf-cucumber (~> 3.10, >= 3.10.8)
|
cucumber-rails (2.4.0)
|
||||||
cucumber-rails (2.3.0)
|
|
||||||
capybara (>= 2.18, < 4)
|
capybara (>= 2.18, < 4)
|
||||||
cucumber (>= 3.0.2, < 6)
|
cucumber (>= 3.2, < 8)
|
||||||
mime-types (~> 3.2)
|
mime-types (~> 3.3)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.10)
|
||||||
railties (>= 5.0, < 7)
|
railties (>= 5.0, < 7)
|
||||||
cucumber-tag-expressions (2.0.4)
|
rexml (~> 3.0)
|
||||||
cucumber-wire (4.0.1)
|
webrick (~> 1.7)
|
||||||
cucumber-core (~> 8.0, >= 8.0.1)
|
cucumber-tag-expressions (4.1.0)
|
||||||
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
cucumber-wire (6.2.0)
|
||||||
cucumber-messages (~> 13.0, >= 13.0.1)
|
cucumber-core (~> 10.1, >= 10.1.0)
|
||||||
database_cleaner (1.8.5)
|
cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
|
||||||
database_cleaner-active_record (1.8.0)
|
cucumber-messages (~> 17.1, >= 17.1.1)
|
||||||
activerecord
|
database_cleaner-active_record (2.0.1)
|
||||||
database_cleaner (~> 1.8.0)
|
activerecord (>= 5.a)
|
||||||
|
database_cleaner-core (~> 2.0.0)
|
||||||
|
database_cleaner-core (2.0.1)
|
||||||
devise (4.8.0)
|
devise (4.8.0)
|
||||||
bcrypt (~> 3.0)
|
bcrypt (~> 3.0)
|
||||||
orm_adapter (~> 0.1)
|
orm_adapter (~> 0.1)
|
||||||
railties (>= 4.1.0)
|
railties (>= 4.1.0)
|
||||||
responders
|
responders
|
||||||
warden (~> 1.2.3)
|
warden (~> 1.2.3)
|
||||||
devise-two-factor (4.0.0)
|
devise-two-factor (4.0.1)
|
||||||
activesupport (< 6.2)
|
activesupport (< 6.2)
|
||||||
attr_encrypted (>= 1.3, < 4, != 2)
|
attr_encrypted (>= 1.3, < 4, != 2)
|
||||||
devise (~> 4.0)
|
devise (~> 4.0)
|
||||||
|
|
@ -235,11 +237,11 @@ GEM
|
||||||
execjs
|
execjs
|
||||||
multi_json (>= 1.3)
|
multi_json (>= 1.3)
|
||||||
rake
|
rake
|
||||||
et-orbi (1.2.4)
|
et-orbi (1.2.6)
|
||||||
tzinfo
|
tzinfo
|
||||||
ethon (0.15.0)
|
ethon (0.15.0)
|
||||||
ffi (>= 1.15.0)
|
ffi (>= 1.15.0)
|
||||||
excon (0.82.0)
|
excon (0.88.0)
|
||||||
execjs (2.8.1)
|
execjs (2.8.1)
|
||||||
eye (0.10.0)
|
eye (0.10.0)
|
||||||
celluloid (~> 0.17.3)
|
celluloid (~> 0.17.3)
|
||||||
|
|
@ -255,10 +257,10 @@ GEM
|
||||||
railties (>= 5.0.0)
|
railties (>= 5.0.0)
|
||||||
faraday (0.17.4)
|
faraday (0.17.4)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
faraday-cookie_jar (0.0.6)
|
faraday-cookie_jar (0.0.7)
|
||||||
faraday (>= 0.7.4)
|
faraday (>= 0.8.0)
|
||||||
http-cookie (~> 1.0.0)
|
http-cookie (~> 1.0.0)
|
||||||
faraday_middleware (0.13.1)
|
faraday_middleware (0.14.0)
|
||||||
faraday (>= 0.7.4, < 1.0)
|
faraday (>= 0.7.4, < 1.0)
|
||||||
ffi (1.15.4)
|
ffi (1.15.4)
|
||||||
ffi-compiler (1.0.1)
|
ffi-compiler (1.0.1)
|
||||||
|
|
@ -268,7 +270,7 @@ GEM
|
||||||
activerecord (>= 2)
|
activerecord (>= 2)
|
||||||
activesupport (>= 2)
|
activesupport (>= 2)
|
||||||
hashdiff
|
hashdiff
|
||||||
fog-aws (3.10.0)
|
fog-aws (3.12.0)
|
||||||
fog-core (~> 2.1)
|
fog-core (~> 2.1)
|
||||||
fog-json (~> 1.1)
|
fog-json (~> 1.1)
|
||||||
fog-xml (~> 0.1)
|
fog-xml (~> 0.1)
|
||||||
|
|
@ -281,11 +283,11 @@ GEM
|
||||||
fog-json (1.2.0)
|
fog-json (1.2.0)
|
||||||
fog-core
|
fog-core
|
||||||
multi_json (~> 1.10)
|
multi_json (~> 1.10)
|
||||||
fog-xml (0.1.3)
|
fog-xml (0.1.4)
|
||||||
fog-core
|
fog-core
|
||||||
nokogiri (>= 1.5.11, < 2.0.0)
|
nokogiri (>= 1.5.11, < 2.0.0)
|
||||||
formatador (0.3.0)
|
formatador (0.3.0)
|
||||||
fugit (1.5.0)
|
fugit (1.5.2)
|
||||||
et-orbi (~> 1.1, >= 1.1.8)
|
et-orbi (~> 1.1, >= 1.1.8)
|
||||||
raabro (~> 1.4)
|
raabro (~> 1.4)
|
||||||
fuubar (2.5.1)
|
fuubar (2.5.1)
|
||||||
|
|
@ -296,14 +298,14 @@ GEM
|
||||||
gitlab (4.17.0)
|
gitlab (4.17.0)
|
||||||
httparty (~> 0.18)
|
httparty (~> 0.18)
|
||||||
terminal-table (~> 1.5, >= 1.5.1)
|
terminal-table (~> 1.5, >= 1.5.1)
|
||||||
globalid (0.4.2)
|
globalid (0.5.2)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 5.0)
|
||||||
gon (6.4.0)
|
gon (6.4.0)
|
||||||
actionpack (>= 3.0.20)
|
actionpack (>= 3.0.20)
|
||||||
i18n (>= 0.7)
|
i18n (>= 0.7)
|
||||||
multi_json
|
multi_json
|
||||||
request_store (>= 1.0)
|
request_store (>= 1.0)
|
||||||
haml (5.2.1)
|
haml (5.2.2)
|
||||||
temple (>= 0.8.0)
|
temple (>= 0.8.0)
|
||||||
tilt
|
tilt
|
||||||
haml_lint (0.37.1)
|
haml_lint (0.37.1)
|
||||||
|
|
@ -312,7 +314,7 @@ GEM
|
||||||
rainbow
|
rainbow
|
||||||
rubocop (>= 0.50.0)
|
rubocop (>= 0.50.0)
|
||||||
sysexits (~> 1.1)
|
sysexits (~> 1.1)
|
||||||
hamlit (2.15.0)
|
hamlit (2.15.1)
|
||||||
temple (>= 0.8.2)
|
temple (>= 0.8.2)
|
||||||
thor
|
thor
|
||||||
tilt
|
tilt
|
||||||
|
|
@ -334,11 +336,11 @@ GEM
|
||||||
ffi-compiler (>= 1.0, < 2.0)
|
ffi-compiler (>= 1.0, < 2.0)
|
||||||
http_accept_language (2.1.1)
|
http_accept_language (2.1.1)
|
||||||
http_parser.rb (0.6.0)
|
http_parser.rb (0.6.0)
|
||||||
httparty (0.18.1)
|
httparty (0.20.0)
|
||||||
mime-types (~> 3.0)
|
mime-types (~> 3.0)
|
||||||
multi_xml (>= 0.5.2)
|
multi_xml (>= 0.5.2)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
i18n (1.8.10)
|
i18n (1.8.11)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
i18n-inflector (2.6.7)
|
i18n-inflector (2.6.7)
|
||||||
i18n (>= 0.4.1)
|
i18n (>= 0.4.1)
|
||||||
|
|
@ -351,12 +353,13 @@ GEM
|
||||||
mini_magick (>= 4.9.5, < 5)
|
mini_magick (>= 4.9.5, < 5)
|
||||||
ruby-vips (>= 2.0.17, < 3)
|
ruby-vips (>= 2.0.17, < 3)
|
||||||
ipaddress (0.8.3)
|
ipaddress (0.8.3)
|
||||||
jasmine (3.7.0)
|
jasmine (3.10.0)
|
||||||
jasmine-core (~> 3.7.0)
|
jasmine-core (~> 3.10.0)
|
||||||
phantomjs
|
phantomjs
|
||||||
rack (>= 1.2.1)
|
rack (>= 2.1.4)
|
||||||
rake
|
rake
|
||||||
jasmine-core (3.7.1)
|
webrick
|
||||||
|
jasmine-core (3.10.1)
|
||||||
jasmine-jquery-rails (2.0.3)
|
jasmine-jquery-rails (2.0.3)
|
||||||
jquery-rails (4.4.0)
|
jquery-rails (4.4.0)
|
||||||
rails-dom-testing (>= 1, < 3)
|
rails-dom-testing (>= 1, < 3)
|
||||||
|
|
@ -364,7 +367,7 @@ GEM
|
||||||
thor (>= 0.14, < 2.0)
|
thor (>= 0.14, < 2.0)
|
||||||
jquery-ui-rails (5.0.5)
|
jquery-ui-rails (5.0.5)
|
||||||
railties (>= 3.2.16)
|
railties (>= 3.2.16)
|
||||||
js-routes (1.4.14)
|
js-routes (2.1.2)
|
||||||
railties (>= 4)
|
railties (>= 4)
|
||||||
js_image_paths (0.1.1)
|
js_image_paths (0.1.1)
|
||||||
rails (>= 4.0, < 6.0)
|
rails (>= 4.0, < 6.0)
|
||||||
|
|
@ -381,9 +384,9 @@ GEM
|
||||||
rspec
|
rspec
|
||||||
jsonpath (1.1.0)
|
jsonpath (1.1.0)
|
||||||
multi_json
|
multi_json
|
||||||
jwt (2.2.3)
|
jwt (2.3.0)
|
||||||
kgio (2.11.4)
|
kgio (2.11.4)
|
||||||
kostya-sigar (2.0.8)
|
kostya-sigar (2.0.10)
|
||||||
leaflet-rails (1.7.0)
|
leaflet-rails (1.7.0)
|
||||||
rails (>= 4.2.0)
|
rails (>= 4.2.0)
|
||||||
listen (3.5.1)
|
listen (3.5.1)
|
||||||
|
|
@ -402,19 +405,18 @@ GEM
|
||||||
systemu (~> 2.6.5)
|
systemu (~> 2.6.5)
|
||||||
mail (2.7.1)
|
mail (2.7.1)
|
||||||
mini_mime (>= 0.1.1)
|
mini_mime (>= 0.1.1)
|
||||||
marcel (1.0.1)
|
marcel (1.0.2)
|
||||||
markdown-it-html5-embed (1.0.0)
|
markdown-it-html5-embed (1.0.0)
|
||||||
markerb (1.1.0)
|
markerb (1.1.0)
|
||||||
memoizable (0.4.2)
|
memoizable (0.4.2)
|
||||||
thread_safe (~> 0.3, >= 0.3.1)
|
thread_safe (~> 0.3, >= 0.3.1)
|
||||||
method_source (1.0.0)
|
method_source (1.0.0)
|
||||||
middleware (0.1.0)
|
|
||||||
mime-types (3.3.1)
|
mime-types (3.3.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2021.0225)
|
mime-types-data (3.2021.0901)
|
||||||
mini_magick (4.11.0)
|
mini_magick (4.11.0)
|
||||||
mini_mime (1.1.0)
|
mini_mime (1.1.2)
|
||||||
mini_portile2 (2.5.3)
|
mini_portile2 (2.6.1)
|
||||||
minitest (5.14.4)
|
minitest (5.14.4)
|
||||||
mobile-fu (1.4.0)
|
mobile-fu (1.4.0)
|
||||||
rack-mobile-detect
|
rack-mobile-detect
|
||||||
|
|
@ -425,11 +427,11 @@ GEM
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
mysql2 (0.5.3)
|
mysql2 (0.5.3)
|
||||||
naught (1.1.0)
|
naught (1.1.0)
|
||||||
nio4r (2.5.7)
|
nio4r (2.5.8)
|
||||||
nokogiri (1.11.7)
|
nokogiri (1.12.5)
|
||||||
mini_portile2 (~> 2.5.0)
|
mini_portile2 (~> 2.6.1)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
oauth (0.5.6)
|
oauth (0.5.7)
|
||||||
oauth2 (1.4.7)
|
oauth2 (1.4.7)
|
||||||
faraday (>= 0.8, < 2.0)
|
faraday (>= 0.8, < 2.0)
|
||||||
jwt (>= 1.0, < 3.0)
|
jwt (>= 1.0, < 3.0)
|
||||||
|
|
@ -439,15 +441,19 @@ GEM
|
||||||
octokit (4.21.0)
|
octokit (4.21.0)
|
||||||
faraday (>= 0.9)
|
faraday (>= 0.9)
|
||||||
sawyer (~> 0.8.0, >= 0.5.3)
|
sawyer (~> 0.8.0, >= 0.5.3)
|
||||||
omniauth (1.9.1)
|
omniauth (2.0.4)
|
||||||
hashie (>= 3.4.6)
|
hashie (>= 3.4.6)
|
||||||
rack (>= 1.6.2, < 3)
|
rack (>= 1.6.2, < 3)
|
||||||
|
rack-protection
|
||||||
omniauth-oauth (1.2.0)
|
omniauth-oauth (1.2.0)
|
||||||
oauth
|
oauth
|
||||||
omniauth (>= 1.0, < 3)
|
omniauth (>= 1.0, < 3)
|
||||||
omniauth-oauth2 (1.7.1)
|
omniauth-oauth2 (1.7.2)
|
||||||
oauth2 (~> 1.4)
|
oauth2 (~> 1.4)
|
||||||
omniauth (>= 1.9, < 3)
|
omniauth (>= 1.9, < 3)
|
||||||
|
omniauth-rails_csrf_protection (1.0.0)
|
||||||
|
actionpack (>= 4.2)
|
||||||
|
omniauth (~> 2.0)
|
||||||
omniauth-tumblr (1.2)
|
omniauth-tumblr (1.2)
|
||||||
multi_json
|
multi_json
|
||||||
omniauth-oauth (~> 1.0)
|
omniauth-oauth (~> 1.0)
|
||||||
|
|
@ -459,7 +465,7 @@ GEM
|
||||||
open_graph_reader (0.7.2)
|
open_graph_reader (0.7.2)
|
||||||
faraday (>= 0.9.0)
|
faraday (>= 0.9.0)
|
||||||
nokogiri (~> 1.6)
|
nokogiri (~> 1.6)
|
||||||
openid_connect (1.2.0)
|
openid_connect (1.3.0)
|
||||||
activemodel
|
activemodel
|
||||||
attr_required (>= 1.0.0)
|
attr_required (>= 1.0.0)
|
||||||
json-jwt (>= 1.5.0)
|
json-jwt (>= 1.5.0)
|
||||||
|
|
@ -470,8 +476,8 @@ GEM
|
||||||
validate_url
|
validate_url
|
||||||
webfinger (>= 1.0.1)
|
webfinger (>= 1.0.1)
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
parallel (1.20.1)
|
parallel (1.21.0)
|
||||||
parser (3.0.1.1)
|
parser (3.0.2.0)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
pg (1.2.3)
|
pg (1.2.3)
|
||||||
phantomjs (2.1.1.0)
|
phantomjs (2.1.1.0)
|
||||||
|
|
@ -496,11 +502,6 @@ GEM
|
||||||
pronto-scss (0.11.0)
|
pronto-scss (0.11.0)
|
||||||
pronto (~> 0.11.0)
|
pronto (~> 0.11.0)
|
||||||
scss_lint (~> 0.43, >= 0.43.0)
|
scss_lint (~> 0.43, >= 0.43.0)
|
||||||
protobuf-cucumber (3.10.8)
|
|
||||||
activesupport (>= 3.2)
|
|
||||||
middleware
|
|
||||||
thor
|
|
||||||
thread_safe
|
|
||||||
pry (0.14.1)
|
pry (0.14.1)
|
||||||
coderay (~> 1.1)
|
coderay (~> 1.1)
|
||||||
method_source (~> 1.0)
|
method_source (~> 1.0)
|
||||||
|
|
@ -518,13 +519,15 @@ GEM
|
||||||
activesupport
|
activesupport
|
||||||
rack-mobile-detect (0.4.0)
|
rack-mobile-detect (0.4.0)
|
||||||
rack
|
rack
|
||||||
rack-oauth2 (1.17.0)
|
rack-oauth2 (1.19.0)
|
||||||
activesupport
|
activesupport
|
||||||
attr_required
|
attr_required
|
||||||
httpclient
|
httpclient
|
||||||
json-jwt (>= 1.11.0)
|
json-jwt (>= 1.11.0)
|
||||||
rack (>= 2.1.0)
|
rack (>= 2.1.0)
|
||||||
rack-piwik (0.3.0)
|
rack-piwik (0.3.0)
|
||||||
|
rack-protection (2.1.0)
|
||||||
|
rack
|
||||||
rack-rewrite (1.5.1)
|
rack-rewrite (1.5.1)
|
||||||
rack-ssl (1.4.1)
|
rack-ssl (1.4.1)
|
||||||
rack
|
rack
|
||||||
|
|
@ -601,11 +604,11 @@ GEM
|
||||||
rainbow (3.0.0)
|
rainbow (3.0.0)
|
||||||
raindrops (0.19.2)
|
raindrops (0.19.2)
|
||||||
rake (12.3.3)
|
rake (12.3.3)
|
||||||
rb-fsevent (0.10.4)
|
rb-fsevent (0.11.0)
|
||||||
rb-inotify (0.10.1)
|
rb-inotify (0.10.1)
|
||||||
ffi (~> 1.0)
|
ffi (~> 1.0)
|
||||||
redcarpet (3.5.1)
|
redcarpet (3.5.1)
|
||||||
redis (4.3.1)
|
redis (4.5.1)
|
||||||
regexp_parser (2.1.1)
|
regexp_parser (2.1.1)
|
||||||
request_store (1.5.0)
|
request_store (1.5.0)
|
||||||
rack (>= 1.4)
|
rack (>= 1.4)
|
||||||
|
|
@ -614,10 +617,10 @@ GEM
|
||||||
railties (>= 5.0)
|
railties (>= 5.0)
|
||||||
rexml (3.2.5)
|
rexml (3.2.5)
|
||||||
rotp (6.2.0)
|
rotp (6.2.0)
|
||||||
rqrcode (2.0.0)
|
rqrcode (2.1.0)
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
rqrcode_core (~> 1.0)
|
rqrcode_core (~> 1.0)
|
||||||
rqrcode_core (1.0.0)
|
rqrcode_core (1.2.0)
|
||||||
rspec (3.10.0)
|
rspec (3.10.0)
|
||||||
rspec-core (~> 3.10.0)
|
rspec-core (~> 3.10.0)
|
||||||
rspec-expectations (~> 3.10.0)
|
rspec-expectations (~> 3.10.0)
|
||||||
|
|
@ -631,7 +634,7 @@ GEM
|
||||||
rspec-mocks (3.10.2)
|
rspec-mocks (3.10.2)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.10.0)
|
rspec-support (~> 3.10.0)
|
||||||
rspec-rails (5.0.1)
|
rspec-rails (5.0.2)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 5.2)
|
||||||
activesupport (>= 5.2)
|
activesupport (>= 5.2)
|
||||||
railties (>= 5.2)
|
railties (>= 5.2)
|
||||||
|
|
@ -639,7 +642,7 @@ GEM
|
||||||
rspec-expectations (~> 3.10)
|
rspec-expectations (~> 3.10)
|
||||||
rspec-mocks (~> 3.10)
|
rspec-mocks (~> 3.10)
|
||||||
rspec-support (~> 3.10)
|
rspec-support (~> 3.10)
|
||||||
rspec-support (3.10.2)
|
rspec-support (3.10.3)
|
||||||
rubocop (0.93.1)
|
rubocop (0.93.1)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 2.7.1.5)
|
parser (>= 2.7.1.5)
|
||||||
|
|
@ -657,9 +660,9 @@ GEM
|
||||||
rubocop (>= 0.90.0, < 2.0)
|
rubocop (>= 0.90.0, < 2.0)
|
||||||
ruby-oembed (0.15.0)
|
ruby-oembed (0.15.0)
|
||||||
ruby-progressbar (1.11.0)
|
ruby-progressbar (1.11.0)
|
||||||
ruby-vips (2.1.2)
|
ruby-vips (2.1.3)
|
||||||
ffi (~> 1.12)
|
ffi (~> 1.12)
|
||||||
rubyzip (2.3.0)
|
rubyzip (2.3.2)
|
||||||
rugged (1.0.1)
|
rugged (1.0.1)
|
||||||
sass (3.4.25)
|
sass (3.4.25)
|
||||||
sass-rails (5.0.7)
|
sass-rails (5.0.7)
|
||||||
|
|
@ -676,10 +679,10 @@ GEM
|
||||||
scss_lint (0.55.0)
|
scss_lint (0.55.0)
|
||||||
rake (>= 0.9, < 13)
|
rake (>= 0.9, < 13)
|
||||||
sass (~> 3.4.20)
|
sass (~> 3.4.20)
|
||||||
secure_headers (6.3.2)
|
secure_headers (6.3.3)
|
||||||
shoulda-matchers (4.5.1)
|
shoulda-matchers (4.5.1)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
sidekiq (6.2.1)
|
sidekiq (6.2.2)
|
||||||
connection_pool (>= 2.2.2)
|
connection_pool (>= 2.2.2)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
redis (>= 4.2.0)
|
redis (>= 4.2.0)
|
||||||
|
|
@ -711,7 +714,7 @@ GEM
|
||||||
ssrf_filter (1.0.7)
|
ssrf_filter (1.0.7)
|
||||||
state_machines (0.5.0)
|
state_machines (0.5.0)
|
||||||
string-direction (1.2.2)
|
string-direction (1.2.2)
|
||||||
swd (1.2.0)
|
swd (1.3.0)
|
||||||
activesupport (>= 3)
|
activesupport (>= 3)
|
||||||
attr_required (>= 0.0.5)
|
attr_required (>= 0.0.5)
|
||||||
httpclient (>= 2.4)
|
httpclient (>= 2.4)
|
||||||
|
|
@ -722,14 +725,14 @@ GEM
|
||||||
temple (0.8.2)
|
temple (0.8.2)
|
||||||
terminal-table (1.8.0)
|
terminal-table (1.8.0)
|
||||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
terser (1.1.5)
|
terser (1.1.7)
|
||||||
execjs (>= 0.3.0, < 3)
|
execjs (>= 0.3.0, < 3)
|
||||||
thor (1.1.0)
|
thor (1.1.0)
|
||||||
thread_safe (0.3.6)
|
thread_safe (0.3.6)
|
||||||
tilt (2.0.10)
|
tilt (2.0.10)
|
||||||
timecop (0.9.4)
|
timecop (0.9.4)
|
||||||
timers (4.3.3)
|
timers (4.3.3)
|
||||||
toml-rb (2.0.1)
|
toml-rb (2.1.0)
|
||||||
citrus (~> 3.0, > 3.0)
|
citrus (~> 3.0, > 3.0)
|
||||||
turbo_dev_assets (0.0.2)
|
turbo_dev_assets (0.0.2)
|
||||||
twitter (7.0.0)
|
twitter (7.0.0)
|
||||||
|
|
@ -752,8 +755,8 @@ GEM
|
||||||
thread_safe (~> 0.1)
|
thread_safe (~> 0.1)
|
||||||
unf (0.1.4)
|
unf (0.1.4)
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.7.7)
|
unf_ext (0.0.8)
|
||||||
unicode-display_width (1.7.0)
|
unicode-display_width (1.8.0)
|
||||||
unicorn (6.0.0)
|
unicorn (6.0.0)
|
||||||
kgio (~> 2.6)
|
kgio (~> 2.6)
|
||||||
raindrops (~> 0.7)
|
raindrops (~> 0.7)
|
||||||
|
|
@ -775,17 +778,18 @@ GEM
|
||||||
yard (~> 0.9.20)
|
yard (~> 0.9.20)
|
||||||
warden (1.2.9)
|
warden (1.2.9)
|
||||||
rack (>= 2.0.9)
|
rack (>= 2.0.9)
|
||||||
webfinger (1.1.0)
|
webfinger (1.2.0)
|
||||||
activesupport
|
activesupport
|
||||||
httpclient (>= 2.4)
|
httpclient (>= 2.4)
|
||||||
webmock (3.13.0)
|
webmock (3.14.0)
|
||||||
addressable (>= 2.3.6)
|
addressable (>= 2.8.0)
|
||||||
crack (>= 0.3.2)
|
crack (>= 0.3.2)
|
||||||
hashdiff (>= 0.4.0, < 2.0.0)
|
hashdiff (>= 0.4.0, < 2.0.0)
|
||||||
|
webrick (1.7.0)
|
||||||
websocket-driver (0.7.5)
|
websocket-driver (0.7.5)
|
||||||
websocket-extensions (>= 0.1.0)
|
websocket-extensions (>= 0.1.0)
|
||||||
websocket-extensions (0.1.5)
|
websocket-extensions (0.1.5)
|
||||||
will_paginate (3.3.0)
|
will_paginate (3.3.1)
|
||||||
xpath (3.2.0)
|
xpath (3.2.0)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.8)
|
||||||
yajl-ruby (1.4.1)
|
yajl-ruby (1.4.1)
|
||||||
|
|
@ -799,10 +803,10 @@ DEPENDENCIES
|
||||||
activerecord-import (= 1.1.0)
|
activerecord-import (= 1.1.0)
|
||||||
acts-as-taggable-on (= 8.1.0)
|
acts-as-taggable-on (= 8.1.0)
|
||||||
acts_as_api (= 1.0.1)
|
acts_as_api (= 1.0.1)
|
||||||
addressable (= 2.7.0)
|
addressable (= 2.8.0)
|
||||||
apparition (= 0.6.0)
|
apparition (= 0.6.0)
|
||||||
asset_sync (= 2.14.2)
|
asset_sync (= 2.15.0)
|
||||||
autoprefixer-rails (= 10.2.5.1)
|
autoprefixer-rails (= 10.3.3.0)
|
||||||
bootstrap-sass (= 3.4.1)
|
bootstrap-sass (= 3.4.1)
|
||||||
bootstrap-switch-rails (= 3.3.3)
|
bootstrap-switch-rails (= 3.3.3)
|
||||||
capybara (= 3.35.3)
|
capybara (= 3.35.3)
|
||||||
|
|
@ -811,10 +815,10 @@ DEPENDENCIES
|
||||||
compass-rails (= 3.1.0)
|
compass-rails (= 3.1.0)
|
||||||
configurate (= 0.5.0)
|
configurate (= 0.5.0)
|
||||||
cucumber-api-steps (= 0.14)
|
cucumber-api-steps (= 0.14)
|
||||||
cucumber-rails (= 2.3.0)
|
cucumber-rails (= 2.4.0)
|
||||||
database_cleaner-active_record (= 1.8.0)
|
database_cleaner-active_record (= 2.0.1)
|
||||||
devise (= 4.8.0)
|
devise (= 4.8.0)
|
||||||
devise-two-factor (= 4.0.0)
|
devise-two-factor (= 4.0.1)
|
||||||
devise_lastseenable (= 0.0.6)
|
devise_lastseenable (= 0.0.6)
|
||||||
diaspora_federation-json_schema (= 0.2.7)
|
diaspora_federation-json_schema (= 0.2.7)
|
||||||
diaspora_federation-rails (= 0.2.7)
|
diaspora_federation-rails (= 0.2.7)
|
||||||
|
|
@ -823,22 +827,22 @@ DEPENDENCIES
|
||||||
eye (= 0.10.0)
|
eye (= 0.10.0)
|
||||||
factory_bot_rails (= 6.1.0)
|
factory_bot_rails (= 6.1.0)
|
||||||
faraday (= 0.17.4)
|
faraday (= 0.17.4)
|
||||||
faraday-cookie_jar (= 0.0.6)
|
faraday-cookie_jar (= 0.0.7)
|
||||||
faraday_middleware (= 0.13.1)
|
faraday_middleware (= 0.14.0)
|
||||||
fixture_builder (= 0.5.2)
|
fixture_builder (= 0.5.2)
|
||||||
fog-aws (= 3.10.0)
|
fog-aws (= 3.12.0)
|
||||||
fuubar (= 2.5.1)
|
fuubar (= 2.5.1)
|
||||||
gon (= 6.4.0)
|
gon (= 6.4.0)
|
||||||
haml_lint (= 0.37.1)
|
haml_lint (= 0.37.1)
|
||||||
hamlit (= 2.15.0)
|
hamlit (= 2.15.1)
|
||||||
handlebars_assets (= 0.23.9)
|
handlebars_assets (= 0.23.9)
|
||||||
http_accept_language (= 2.1.1)
|
http_accept_language (= 2.1.1)
|
||||||
i18n-inflector-rails (= 1.0.7)
|
i18n-inflector-rails (= 1.0.7)
|
||||||
jasmine (= 3.7.0)
|
jasmine (= 3.10.0)
|
||||||
jasmine-jquery-rails (= 2.0.3)
|
jasmine-jquery-rails (= 2.0.3)
|
||||||
jquery-rails (= 4.4.0)
|
jquery-rails (= 4.4.0)
|
||||||
jquery-ui-rails (= 5.0.5)
|
jquery-ui-rails (= 5.0.5)
|
||||||
js-routes (= 1.4.14)
|
js-routes (= 2.1.2)
|
||||||
js_image_paths (= 0.1.1)
|
js_image_paths (= 0.1.1)
|
||||||
json (= 2.3.0)
|
json (= 2.3.0)
|
||||||
json-schema (= 2.8.1)
|
json-schema (= 2.8.1)
|
||||||
|
|
@ -852,13 +856,14 @@ DEPENDENCIES
|
||||||
minitest
|
minitest
|
||||||
mobile-fu (= 1.4.0)
|
mobile-fu (= 1.4.0)
|
||||||
mysql2 (= 0.5.3)
|
mysql2 (= 0.5.3)
|
||||||
nokogiri (= 1.11.7)
|
nokogiri (= 1.12.5)
|
||||||
omniauth (= 1.9.1)
|
omniauth (= 2.0.4)
|
||||||
|
omniauth-rails_csrf_protection (= 1.0.0)
|
||||||
omniauth-tumblr (= 1.2)
|
omniauth-tumblr (= 1.2)
|
||||||
omniauth-twitter (= 1.4.0)
|
omniauth-twitter (= 1.4.0)
|
||||||
omniauth-wordpress (= 0.2.2)
|
omniauth-wordpress (= 0.2.2)
|
||||||
open_graph_reader (= 0.7.2)
|
open_graph_reader (= 0.7.2)
|
||||||
openid_connect (= 1.2.0)
|
openid_connect (= 1.3.0)
|
||||||
pg (= 1.2.3)
|
pg (= 1.2.3)
|
||||||
pronto (= 0.11.0)
|
pronto (= 0.11.0)
|
||||||
pronto-eslint (= 0.11.0)
|
pronto-eslint (= 0.11.0)
|
||||||
|
|
@ -900,19 +905,19 @@ DEPENDENCIES
|
||||||
rails-i18n (= 5.1.3)
|
rails-i18n (= 5.1.3)
|
||||||
rails-timeago (= 2.19.1)
|
rails-timeago (= 2.19.1)
|
||||||
redcarpet (= 3.5.1)
|
redcarpet (= 3.5.1)
|
||||||
redis (= 4.3.1)
|
redis (= 4.5.1)
|
||||||
responders (= 3.0.1)
|
responders (= 3.0.1)
|
||||||
rqrcode (= 2.0.0)
|
rqrcode (= 2.1.0)
|
||||||
rspec-json_expectations (~> 2.1)
|
rspec-json_expectations (~> 2.1)
|
||||||
rspec-rails (= 5.0.1)
|
rspec-rails (= 5.0.2)
|
||||||
rubocop (= 0.93.1)
|
rubocop (= 0.93.1)
|
||||||
rubocop-rails (= 2.9.1)
|
rubocop-rails (= 2.9.1)
|
||||||
ruby-oembed (= 0.15.0)
|
ruby-oembed (= 0.15.0)
|
||||||
rubyzip (= 2.3.0)
|
rubyzip (= 2.3.2)
|
||||||
sass-rails (= 5.0.7)
|
sass-rails (= 5.0.7)
|
||||||
secure_headers (= 6.3.2)
|
secure_headers (= 6.3.3)
|
||||||
shoulda-matchers (= 4.5.1)
|
shoulda-matchers (= 4.5.1)
|
||||||
sidekiq (= 6.2.1)
|
sidekiq (= 6.2.2)
|
||||||
sidekiq-cron (= 1.2.0)
|
sidekiq-cron (= 1.2.0)
|
||||||
simple_captcha2 (= 0.5.0)
|
simple_captcha2 (= 0.5.0)
|
||||||
simplecov (= 0.21.2)
|
simplecov (= 0.21.2)
|
||||||
|
|
@ -920,9 +925,9 @@ DEPENDENCIES
|
||||||
sprockets-es6 (= 0.9.2)
|
sprockets-es6 (= 0.9.2)
|
||||||
sprockets-rails (= 3.2.2)
|
sprockets-rails (= 3.2.2)
|
||||||
string-direction (= 1.2.2)
|
string-direction (= 1.2.2)
|
||||||
terser (= 1.1.5)
|
terser (= 1.1.7)
|
||||||
timecop (= 0.9.4)
|
timecop (= 0.9.4)
|
||||||
toml-rb (= 2.0.1)
|
toml-rb (= 2.1.0)
|
||||||
turbo_dev_assets (= 0.0.2)
|
turbo_dev_assets (= 0.0.2)
|
||||||
twitter (= 7.0.0)
|
twitter (= 7.0.0)
|
||||||
twitter-text (= 3.1.0)
|
twitter-text (= 3.1.0)
|
||||||
|
|
@ -931,8 +936,8 @@ DEPENDENCIES
|
||||||
unicorn-worker-killer (= 0.4.5)
|
unicorn-worker-killer (= 0.4.5)
|
||||||
uuid (= 2.3.9)
|
uuid (= 2.3.9)
|
||||||
versionist (= 2.0.1)
|
versionist (= 2.0.1)
|
||||||
webmock (= 3.13.0)
|
webmock (= 3.14.0)
|
||||||
will_paginate (= 3.3.0)
|
will_paginate (= 3.3.1)
|
||||||
yajl-ruby (= 1.4.1)
|
yajl-ruby (= 1.4.1)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ Handlebars.registerHelper('linkToPerson', function(context, block) {
|
||||||
// relationship indicator for profile page
|
// relationship indicator for profile page
|
||||||
Handlebars.registerHelper("sharingMessage", function(person) {
|
Handlebars.registerHelper("sharingMessage", function(person) {
|
||||||
var i18nScope = "people.helper.is_not_sharing";
|
var i18nScope = "people.helper.is_not_sharing";
|
||||||
var icon = "circle";
|
var icon = "entypo-record";
|
||||||
if( person.is_sharing ) {
|
if( person.is_sharing ) {
|
||||||
i18nScope = "people.helper.is_sharing";
|
i18nScope = "people.helper.is_sharing";
|
||||||
icon = "entypo-check";
|
icon = "entypo-check";
|
||||||
|
|
|
||||||
|
|
@ -19,10 +19,15 @@ app.views.Hovercard = app.views.Base.extend({
|
||||||
|
|
||||||
this.showMe = false;
|
this.showMe = false;
|
||||||
this.parent = null; // current 'hovercardable' element that caused HC to appear
|
this.parent = null; // current 'hovercardable' element that caused HC to appear
|
||||||
|
|
||||||
this.active = true;
|
this.active = true;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
presenter: function() {
|
||||||
|
return _.extend({}, this.defaultPresenter(), {
|
||||||
|
person: this.person
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
postRenderTemplate: function() {
|
postRenderTemplate: function() {
|
||||||
this.$el.appendTo($("body"));
|
this.$el.appendTo($("body"));
|
||||||
|
|
||||||
|
|
@ -102,14 +107,14 @@ app.views.Hovercard = app.views.Base.extend({
|
||||||
if( !person || person.length === 0 ) {
|
if( !person || person.length === 0 ) {
|
||||||
throw new Error("received data is not a person object");
|
throw new Error("received data is not a person object");
|
||||||
}
|
}
|
||||||
|
var personModel = new app.models.Person(person);
|
||||||
|
person.is_sharing = personModel.isSharing();
|
||||||
|
self.person = person;
|
||||||
if (app.currentUser.authenticated()) {
|
if (app.currentUser.authenticated()) {
|
||||||
self.aspectMembershipDropdown = new app.views.AspectMembership({person: new app.models.Person(person)});
|
self.aspectMembershipDropdown = new app.views.AspectMembership({person: personModel});
|
||||||
}
|
}
|
||||||
|
|
||||||
self.render();
|
self.render();
|
||||||
|
|
||||||
self._populateHovercardWith(person);
|
|
||||||
if( !self.showMe ) {
|
if( !self.showMe ) {
|
||||||
// mouse has left element
|
// mouse has left element
|
||||||
return;
|
return;
|
||||||
|
|
@ -118,23 +123,6 @@ app.views.Hovercard = app.views.Base.extend({
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_populateHovercardWith: function(person) {
|
|
||||||
this.avatarLink.attr("href", this.href());
|
|
||||||
this.personLink.attr("href", this.href());
|
|
||||||
this.personLink.text(person.name);
|
|
||||||
this.personID.text(person.diaspora_id);
|
|
||||||
|
|
||||||
if (person.profile) {
|
|
||||||
this.avatar.attr("src", person.profile.avatar);
|
|
||||||
|
|
||||||
// set hashtags
|
|
||||||
this.hashtags.empty();
|
|
||||||
this.hashtags.html($(_.map(person.profile.tags, function(tag) {
|
|
||||||
return $("<a></a>", {href: Routes.tag(tag)}).text("#" + tag)[0];
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_positionHovercard: function() {
|
_positionHovercard: function() {
|
||||||
var p_pos = this.parent.offset();
|
var p_pos = this.parent.offset();
|
||||||
var p_height = this.parent.height();
|
var p_height = this.parent.height();
|
||||||
|
|
|
||||||
|
|
@ -55,8 +55,8 @@ body {
|
||||||
|
|
||||||
.tag:hover { background-color: desaturate(darken($link-color, 35%), 20%); }
|
.tag:hover { background-color: desaturate(darken($link-color, 35%), 20%); }
|
||||||
|
|
||||||
#profile_container .profile_header {
|
#sharing_message.entypo-check {
|
||||||
#author_info #sharing_message.entypo-check { color: lighten($green, 10%); }
|
color: lighten($green, 10%);
|
||||||
}
|
}
|
||||||
|
|
||||||
#invitationsModal #email_invitation { border-top: 1px dashed $gray-light; }
|
#invitationsModal #email_invitation { border-top: 1px dashed $gray-light; }
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-toggle {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.user-name {
|
||||||
|
margin-right: 3px;
|
||||||
|
max-width: 250px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.user-menu-dropdown {
|
.user-menu-dropdown {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,12 @@
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.status-container {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
#hovercard_dropdown_container {
|
#hovercard_dropdown_container {
|
||||||
overflow: visible !important; /* otherwise the aspect dropdown is cropped */
|
overflow: visible !important; /* otherwise the aspect dropdown is cropped */
|
||||||
}
|
}
|
||||||
|
|
@ -53,10 +59,7 @@
|
||||||
|
|
||||||
.handle {
|
.handle {
|
||||||
color: $text-grey;
|
color: $text-grey;
|
||||||
line-height: 18px;
|
margin-right: 2px;
|
||||||
padding-top: 0px;
|
|
||||||
margin-top: 0px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group.aspect-membership-dropdown { margin: 0 !important; }
|
.btn-group.aspect-membership-dropdown { margin: 0 !important; }
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
}
|
}
|
||||||
.invitations-button { padding-left: 0; }
|
.invitations-button { padding-left: 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#people-stream {
|
#people-stream {
|
||||||
.media, .media-body {
|
.media, .media-body {
|
||||||
overflow: visible;
|
overflow: visible;
|
||||||
|
|
@ -28,6 +29,7 @@
|
||||||
.info { font-size: $font-size-small; }
|
.info { font-size: $font-size-small; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#blocked_people {
|
#blocked_people {
|
||||||
.blocked-person {
|
.blocked-person {
|
||||||
border-bottom: 1px solid $border-grey;
|
border-bottom: 1px solid $border-grey;
|
||||||
|
|
@ -45,3 +47,13 @@
|
||||||
.btn-danger { margin-top: 9px; }
|
.btn-danger { margin-top: 9px; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#sharing_message {
|
||||||
|
&.entypo-check {
|
||||||
|
color: darken($brand-success, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.entypo-record {
|
||||||
|
color: $text-grey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,6 @@
|
||||||
#sharing_message {
|
#sharing_message {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
&.circle {
|
|
||||||
color: $text-grey;
|
|
||||||
&:before { content: '\26aa'; }
|
|
||||||
}
|
|
||||||
&.entypo-check { color: darken($brand-success,20%); }
|
|
||||||
}
|
}
|
||||||
.description {
|
.description {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
<ul class="nav navbar-nav navbar-right">
|
<ul class="nav navbar-nav navbar-right">
|
||||||
<li class="dropdown user-menu" id="user-menu">
|
<li class="dropdown user-menu" id="user-menu">
|
||||||
<a href="{{urlTo "person" current_user.guid}}" class="dropdown-toggle hidden-xs hidden-sm" data-toggle="dropdown" role="button" aria-expanded="false">
|
<a href="{{urlTo "person" current_user.guid}}" class="dropdown-toggle hidden-xs hidden-sm" data-toggle="dropdown" role="button" aria-expanded="false">
|
||||||
<span class="user-avatar pull-left">
|
<span class="user-avatar">
|
||||||
{{{personImage current_user "small"}}}
|
{{{personImage current_user "small"}}}
|
||||||
</span>
|
</span>
|
||||||
<span class="user-name">{{current_user.name}}</span>
|
<span class="user-name">{{current_user.name}}</span>
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,22 @@
|
||||||
|
{{#with person}}
|
||||||
<div id="hovercard">
|
<div id="hovercard">
|
||||||
<a class='person_avatar'>
|
<a class="person_avatar" href="{{urlTo 'person' guid}}">
|
||||||
<img class="avatar">
|
<img class="avatar" src="{{profile.avatar}}" />
|
||||||
</a>
|
</a>
|
||||||
<h4>
|
<h4>
|
||||||
<a class="person"></a>
|
<a class="person" href="{{urlTo 'person' guid}}">{{name}}</a>
|
||||||
</h4>
|
</h4>
|
||||||
<div class="handle"></div>
|
<div class="status-container">
|
||||||
|
<div class="handle">{{diaspora_id}}</div>
|
||||||
|
{{{sharingMessage this}}}
|
||||||
|
</div>
|
||||||
<div id="hovercard_dropdown_container"></div>
|
<div id="hovercard_dropdown_container"></div>
|
||||||
<div class="card-footer">
|
<div class="card-footer">
|
||||||
<div class="footer-container">
|
<div class="footer-container">
|
||||||
<div class="hashtags"></div>
|
<div class="hashtags">
|
||||||
|
{{fmtTags profile.tags}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
{{/with}}
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,10 @@ class AccountMigration < ApplicationRecord
|
||||||
old_user && new_user
|
old_user && new_user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def includes_photo_migration?
|
||||||
|
remote_photo_path.present?
|
||||||
|
end
|
||||||
|
|
||||||
def tombstone_old_user_and_update_all_references
|
def tombstone_old_user_and_update_all_references
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
account_deleter.tombstone_person_and_profile
|
account_deleter.tombstone_person_and_profile
|
||||||
|
|
@ -146,6 +150,7 @@ class AccountMigration < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_all_references
|
def update_all_references
|
||||||
|
update_remote_photo_path if remotely_initiated? && includes_photo_migration?
|
||||||
update_person_references
|
update_person_references
|
||||||
update_user_references if user_changed_id_locally?
|
update_user_references if user_changed_id_locally?
|
||||||
end
|
end
|
||||||
|
|
@ -224,6 +229,20 @@ class AccountMigration < ApplicationRecord
|
||||||
.destroy_all
|
.destroy_all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_remote_photo_path
|
||||||
|
Photo.where(author: old_person)
|
||||||
|
.update_all(remote_photo_path: remote_photo_path) # rubocop:disable Rails/SkipsModelValidations
|
||||||
|
return unless user_left_our_pod?
|
||||||
|
|
||||||
|
Photo.where(author: old_person).find_in_batches do |batch|
|
||||||
|
batch.each do |photo|
|
||||||
|
photo.processed_image = nil
|
||||||
|
photo.unprocessed_image = nil
|
||||||
|
logger.warn "Error cleaning up photo #{photo.id}" unless photo.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def update_person_references
|
def update_person_references
|
||||||
logger.debug "Updating references from person id=#{old_person.id} to person id=#{newest_person.id}"
|
logger.debug "Updating references from person id=#{old_person.id} to person id=#{newest_person.id}"
|
||||||
eliminate_person_duplicates
|
eliminate_person_duplicates
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class PersonPresenter < BasePresenter
|
||||||
end
|
end
|
||||||
|
|
||||||
def hovercard
|
def hovercard
|
||||||
base_hash_with_contact.merge(profile: ProfilePresenter.new(profile).for_hovercard)
|
full_hash.merge(profile: ProfilePresenter.new(profile).for_hovercard)
|
||||||
end
|
end
|
||||||
|
|
||||||
def metas_attributes
|
def metas_attributes
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,26 @@
|
||||||
# are used as for federation messages generation.
|
# are used as for federation messages generation.
|
||||||
class FederationEntitySerializer < ActiveModel::Serializer
|
class FederationEntitySerializer < ActiveModel::Serializer
|
||||||
include SerializerPostProcessing
|
include SerializerPostProcessing
|
||||||
|
include Diaspora::Logging
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def modify_serializable_object(hash)
|
def modify_serializable_object(hash)
|
||||||
hash.merge(entity.to_json)
|
hash.merge(entity.to_json)
|
||||||
|
rescue DiasporaFederation::Entities::Relayable::AuthorPrivateKeyNotFound => e
|
||||||
|
# The author of this relayable probably migrated from this pod to a different pod,
|
||||||
|
# and we neither have the signature nor the new private key to generate a valid signature.
|
||||||
|
# But we can use the private key of the old user to generate the signature it had when this entity was created
|
||||||
|
old_person = AccountMigration.joins(:old_person)
|
||||||
|
.where("new_person_id = ? AND people.owner_id IS NOT NULL", object.author_id)
|
||||||
|
.first.old_person
|
||||||
|
if old_person
|
||||||
|
logger.info "Using private key of #{old_person.diaspora_handle} to export: #{e.message}"
|
||||||
|
object.author = old_person
|
||||||
|
hash.merge(entity.to_json)
|
||||||
|
else
|
||||||
|
logger.warn "Skip entity for export because #{e.class}: #{e.message}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def entity
|
def entity
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
- else
|
- else
|
||||||
= t("services.index.not_logged_in")
|
= t("services.index.not_logged_in")
|
||||||
= link_to(t("services.index.connect"), "/auth/#{provider}")
|
= link_to(t("services.index.connect"), "/auth/#{provider}", method: :post)
|
||||||
|
|
||||||
- else
|
- else
|
||||||
.well
|
.well
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@
|
||||||
- if service_unconnected?(service)
|
- if service_unconnected?(service)
|
||||||
= link_to(content_tag(:div, nil,
|
= link_to(content_tag(:div, nil,
|
||||||
class: "social-media-logos-#{service.to_s.downcase}-24x24",
|
class: "social-media-logos-#{service.to_s.downcase}-24x24",
|
||||||
title: service.to_s.titleize), "/auth/#{service}")
|
title: service.to_s.titleize), "/auth/#{service}", method: :post)
|
||||||
|
|
||||||
.section.collapsed
|
.section.collapsed
|
||||||
.title
|
.title
|
||||||
|
|
|
||||||
|
|
@ -3,4 +3,6 @@
|
||||||
JsRoutes.setup do |config|
|
JsRoutes.setup do |config|
|
||||||
config.camel_case = true
|
config.camel_case = true
|
||||||
config.compact = true
|
config.compact = true
|
||||||
|
config.module_type = nil
|
||||||
|
config.namespace = "Routes"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddRemotePhotoPathToAccountMigration < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :account_migrations, :remote_photo_path, :text
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -49,3 +49,21 @@ Feature: Hovercards
|
||||||
Then I should see a hovercard
|
Then I should see a hovercard
|
||||||
And I should see "#first" hashtag in the hovercard
|
And I should see "#first" hashtag in the hovercard
|
||||||
And I should see "#second" hashtag in the hovercard
|
And I should see "#second" hashtag in the hovercard
|
||||||
|
|
||||||
|
Scenario: Hovercards contain the aspect membership and the sharing status
|
||||||
|
Given a user with email "alice@alice.alice" is connected with "bob@bob.bob"
|
||||||
|
And I sign in as "alice@alice.alice"
|
||||||
|
And I am on "bob@bob.bob"'s page
|
||||||
|
When I activate the first hovercard
|
||||||
|
Then I should see a hovercard
|
||||||
|
And I should see "Besties" within ".aspect-membership-dropdown"
|
||||||
|
And I should see a "[title='Bob Jones is sharing with you']" within ".status-container"
|
||||||
|
And I should see a ".entypo-check" within ".sharing_message_container"
|
||||||
|
|
||||||
|
Scenario: Hovercards contain sharing status when not sharing
|
||||||
|
Given I sign in as "alice@alice.alice"
|
||||||
|
And I am on "bob@bob.bob"'s page
|
||||||
|
When I activate the first hovercard
|
||||||
|
Then I should see a hovercard
|
||||||
|
And I should see a "[title='Bob Jones is not sharing with you']" within ".status-container"
|
||||||
|
And I should see a ".entypo-record" within ".sharing_message_container"
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,11 @@ module Diaspora
|
||||||
profile = profile(entity.profile, opts)
|
profile = profile(entity.profile, opts)
|
||||||
return if AccountMigration.exists?(old_person: old_person, new_person: profile.person)
|
return if AccountMigration.exists?(old_person: old_person, new_person: profile.person)
|
||||||
|
|
||||||
AccountMigration.create!(old_person: old_person, new_person: profile.person).tap do |migration|
|
AccountMigration.create!(
|
||||||
|
old_person: old_person,
|
||||||
|
new_person: profile.person,
|
||||||
|
remote_photo_path: entity.remote_photo_path
|
||||||
|
).tap do |migration|
|
||||||
migration.signature = entity.signature if old_person.local?
|
migration.signature = entity.signature if old_person.local?
|
||||||
migration.save!
|
migration.save!
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -149,9 +149,29 @@ shared_examples_for "migration scenarios initiated locally" do
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
|
|
||||||
inlined_jobs do
|
inlined_jobs { run_migration }
|
||||||
run_migration
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "does not change the remote paths" do
|
||||||
|
photo = FactoryBot.create(:photo, author: old_person)
|
||||||
|
remote_photo_path = photo.remote_photo_path
|
||||||
|
|
||||||
|
run_migration
|
||||||
|
|
||||||
|
expect(photo.reload.remote_photo_path).to eq(remote_photo_path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
shared_examples_for "remote photo migration" do
|
||||||
|
it "changes the remote paths of photos of the old person" do
|
||||||
|
old_photo = FactoryBot.create(:photo, author: old_person)
|
||||||
|
new_photo = FactoryBot.create(:photo, author: new_person)
|
||||||
|
new_remote_photo_path = old_photo.remote_photo_path
|
||||||
|
|
||||||
|
run_migration
|
||||||
|
|
||||||
|
expect(old_photo.reload.remote_photo_path).to eq("https://diaspora.example.tld/uploads/images/")
|
||||||
|
expect(new_photo.reload.remote_photo_path).to eq(new_remote_photo_path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -210,6 +230,8 @@ describe "account migration" do
|
||||||
|
|
||||||
include_examples "migration scenarios initiated remotely"
|
include_examples "migration scenarios initiated remotely"
|
||||||
|
|
||||||
|
include_examples "remote photo migration"
|
||||||
|
|
||||||
context "when new person has been migrated before" do
|
context "when new person has been migrated before" do
|
||||||
let(:intermidiate_person) { create_remote_user("remote-d.net").person }
|
let(:intermidiate_person) { create_remote_user("remote-d.net").person }
|
||||||
|
|
||||||
|
|
@ -238,6 +260,8 @@ describe "account migration" do
|
||||||
|
|
||||||
include_examples "migration scenarios initiated remotely"
|
include_examples "migration scenarios initiated remotely"
|
||||||
|
|
||||||
|
include_examples "remote photo migration"
|
||||||
|
|
||||||
it_behaves_like "migration scenarios with local old user"
|
it_behaves_like "migration scenarios with local old user"
|
||||||
|
|
||||||
it_behaves_like "deletes all of the user data" do
|
it_behaves_like "deletes all of the user data" do
|
||||||
|
|
@ -289,7 +313,8 @@ describe "account migration" do
|
||||||
AccountMigration.create!(
|
AccountMigration.create!(
|
||||||
old_person: old_user.person,
|
old_person: old_user.person,
|
||||||
new_person: new_user.person,
|
new_person: new_user.person,
|
||||||
old_private_key: old_user.serialized_private_key
|
old_private_key: old_user.serialized_private_key,
|
||||||
|
remote_photo_path: "https://diaspora.example.tld/uploads/images/"
|
||||||
).perform!
|
).perform!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -326,7 +351,9 @@ describe "account migration" do
|
||||||
let(:new_person) { new_user.person }
|
let(:new_person) { new_user.person }
|
||||||
|
|
||||||
def run_migration
|
def run_migration
|
||||||
AccountMigration.create!(old_person: old_person, new_person: new_person).perform!
|
AccountMigration.create!(old_person: old_person,
|
||||||
|
new_person: new_person,
|
||||||
|
remote_photo_path: "https://diaspora.example.tld/uploads/images/").perform!
|
||||||
end
|
end
|
||||||
|
|
||||||
include_examples "every migration scenario"
|
include_examples "every migration scenario"
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,9 @@ describe "Receive federation messages feature" do
|
||||||
it "receives account migration correctly" do
|
it "receives account migration correctly" do
|
||||||
run_migration
|
run_migration
|
||||||
expect(AccountMigration.where(old_person: sender.person, new_person: new_user.person)).to exist
|
expect(AccountMigration.where(old_person: sender.person, new_person: new_user.person)).to exist
|
||||||
expect(AccountMigration.find_by(old_person: sender.person, new_person: new_user.person)).to be_performed
|
account_migration = AccountMigration.find_by(old_person: sender.person, new_person: new_user.person)
|
||||||
|
expect(account_migration).to be_performed
|
||||||
|
expect(account_migration.remote_photo_path).to eq("https://diaspora.example.tld/uploads/images/")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't run the same migration for the second time" do
|
it "doesn't run the same migration for the second time" do
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,11 @@ describe("app.views.Hovercard", function() {
|
||||||
this.view._populateHovercard();
|
this.view._populateHovercard();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
status: 200,
|
status: 200,
|
||||||
responseText: JSON.stringify({id: 1337})
|
responseText: JSON.stringify({
|
||||||
|
id: 1337,
|
||||||
|
guid: "ba64fce01b04013aa8db34c93d7886ce",
|
||||||
|
name: "Edward Snowden"
|
||||||
|
})
|
||||||
});
|
});
|
||||||
expect(this.view.aspectMembershipDropdown).toEqual(undefined);
|
expect(this.view.aspectMembershipDropdown).toEqual(undefined);
|
||||||
});
|
});
|
||||||
|
|
@ -56,7 +60,11 @@ describe("app.views.Hovercard", function() {
|
||||||
this.view._populateHovercard();
|
this.view._populateHovercard();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
status: 200,
|
status: 200,
|
||||||
responseText: JSON.stringify({id: 1337})
|
responseText: JSON.stringify({
|
||||||
|
id: 1337,
|
||||||
|
guid: "ba64fce01b04013aa8db34c93d7886ce",
|
||||||
|
name: "Edward Snowden"
|
||||||
|
})
|
||||||
});
|
});
|
||||||
expect(this.view.aspectMembershipDropdown).not.toEqual(undefined);
|
expect(this.view.aspectMembershipDropdown).not.toEqual(undefined);
|
||||||
});
|
});
|
||||||
|
|
@ -65,7 +73,14 @@ describe("app.views.Hovercard", function() {
|
||||||
this.view._populateHovercard();
|
this.view._populateHovercard();
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
status: 200,
|
status: 200,
|
||||||
responseText: JSON.stringify({id: 1337, profile: {tags: ["first", "second"]}})
|
responseText: JSON.stringify({
|
||||||
|
id: 1337,
|
||||||
|
guid: "ba64fce01b04013aa8db34c93d7886ce",
|
||||||
|
name: "Edward Snowden",
|
||||||
|
profile: {
|
||||||
|
tags: ["first", "second"]
|
||||||
|
}
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
var first = this.view.hashtags.find("a:contains('#first')");
|
var first = this.view.hashtags.find("a:contains('#first')");
|
||||||
|
|
@ -75,6 +90,36 @@ describe("app.views.Hovercard", function() {
|
||||||
expect(first.first()[0].href).toContain(Routes.tag("first"));
|
expect(first.first()[0].href).toContain(Routes.tag("first"));
|
||||||
expect(second.first()[0].href).toContain(Routes.tag("second"));
|
expect(second.first()[0].href).toContain(Routes.tag("second"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("indicates when the user is sharing with me", function() {
|
||||||
|
this.view._populateHovercard();
|
||||||
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
|
status: 200,
|
||||||
|
responseText: JSON.stringify({
|
||||||
|
id: 1337,
|
||||||
|
guid: "ba64fce01b04013aa8db34c93d7886ce",
|
||||||
|
name: "Edward Snowden",
|
||||||
|
relationship: "sharing"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
var message = this.view.$el.find("#sharing_message");
|
||||||
|
expect(message).toHaveClass("entypo-check");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("indicates when the user is not sharing with me", function() {
|
||||||
|
this.view._populateHovercard();
|
||||||
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
|
status: 200,
|
||||||
|
responseText: JSON.stringify({
|
||||||
|
id: 1337,
|
||||||
|
guid: "ba64fce01b04013aa8db34c93d7886ce",
|
||||||
|
name: "Edward Snowden",
|
||||||
|
relationship: "receiving"
|
||||||
|
})
|
||||||
|
});
|
||||||
|
var message = this.view.$el.find("#sharing_message");
|
||||||
|
expect(message).toHaveClass("entypo-record");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@ describe AccountMigration, type: :model do
|
||||||
let(:old_person) { FactoryBot.create(:person) }
|
let(:old_person) { FactoryBot.create(:person) }
|
||||||
let(:new_person) { FactoryBot.create(:person) }
|
let(:new_person) { FactoryBot.create(:person) }
|
||||||
let(:account_migration) {
|
let(:account_migration) {
|
||||||
AccountMigration.create!(old_person: old_person, new_person: new_person)
|
AccountMigration.create!(old_person: old_person,
|
||||||
|
new_person: new_person,
|
||||||
|
remote_photo_path: "https://diaspora.example.tld/uploads/images/")
|
||||||
}
|
}
|
||||||
|
|
||||||
describe "receive" do
|
describe "receive" do
|
||||||
|
|
@ -129,6 +131,34 @@ describe AccountMigration, type: :model do
|
||||||
expect(Diaspora::Federation::Dispatcher).to receive(:defer_dispatch).with(contact.user, contact)
|
expect(Diaspora::Federation::Dispatcher).to receive(:defer_dispatch).with(contact.user, contact)
|
||||||
account_migration.perform!
|
account_migration.perform!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "cleans up old local photos" do
|
||||||
|
photo = FactoryBot.create(:photo, author: old_person)
|
||||||
|
photo.processed_image.store!(photo.unprocessed_image)
|
||||||
|
photo.save!
|
||||||
|
|
||||||
|
account_migration.perform!
|
||||||
|
|
||||||
|
updated_photo = photo.reload
|
||||||
|
expect(updated_photo.remote_photo_path).to eq("https://diaspora.example.tld/uploads/images/")
|
||||||
|
expect(updated_photo.processed_image.path).to be_nil
|
||||||
|
expect(updated_photo.unprocessed_image.path).to be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does nothing if migration doesn't contain a new remote_photo_path" do
|
||||||
|
photo = FactoryBot.create(:photo, author: old_person)
|
||||||
|
photo.processed_image.store!(photo.unprocessed_image)
|
||||||
|
photo.save!
|
||||||
|
|
||||||
|
remote_photo_path = photo.remote_photo_path
|
||||||
|
|
||||||
|
AccountMigration.create!(old_person: old_person, new_person: new_person).perform!
|
||||||
|
|
||||||
|
updated_photo = photo.reload
|
||||||
|
expect(updated_photo.remote_photo_path).to eq(remote_photo_path)
|
||||||
|
expect(updated_photo.processed_image.path).not_to be_nil
|
||||||
|
expect(updated_photo.unprocessed_image.path).not_to be_nil
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with local new and remote old users" do
|
context "with local new and remote old users" do
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,14 @@ describe Export::OthersDataSerializer do
|
||||||
serializer.associations
|
serializer.associations
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with user's activity" do
|
it "uses old local user private key if the author was migrated away from the pod" do
|
||||||
before do
|
post = DataGenerator.new(user).status_message_with_activity
|
||||||
DataGenerator.new(user).activity
|
|
||||||
|
old_comment_author = post.comments.first.author
|
||||||
|
AccountMigration.create!(old_person: old_comment_author, new_person: FactoryBot.create(:person)).perform!
|
||||||
|
|
||||||
|
serializer.associations[:relayables].select {|r| r[:entity_type] == "comment" }.each do |comment|
|
||||||
|
expect(comment[:entity_data][:author]).to eq(old_comment_author.diaspora_handle)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue