From 246c8d9f0665d4e5816d89c45770f86176cfe6ea Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 25 May 2021 15:59:44 +0100 Subject: [PATCH 01/32] add linter file and modify readme --- .github/workflows/linters.yml | 2 +- README.md | 79 +++++++++++++++-------------------- 2 files changed, 35 insertions(+), 46 deletions(-) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index bd44d15a92..0aaddbe710 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -33,4 +33,4 @@ jobs: npm install --save-dev stylelint@13.3.x stylelint-scss@3.17.x stylelint-config-standard@20.0.x stylelint-csstree-validator [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json - name: Stylelint Report - run: npx stylelint "**/*.{css,scss}" \ No newline at end of file + run: npx stylelint "**/*.{css,scss}" diff --git a/README.md b/README.md index e2ff61f120..9fa75c6abe 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,38 @@ -# Scaffold for social media app with Ruby on Rails +![](https://img.shields.io/badge/Microverse-blueviolet) -> This repo includes intial code for social media app with basic styling. Its purpose is to be a starting point for Microverse students. +# Stay in touch -## Built With +In this stay in touch project we are about to create a simple website where users can share posts and create relationship between then. the project is still in the development process. -- Ruby v2.7.0 -- Ruby on Rails v5.2.4 +## Built With -## Live Demo +- Ruby on Rails +- Active Record +- Bootstrap 4 +- Ruby -TBA +## Getting Started +To get a local copy of the repository please run the following commands on your terminal: -## Getting Started +``` +$ cd +``` -To get a local copy up and running follow these simple example steps. +``` +$ git clone git@github.com:verissimohenry/Stay-in-Touch.git +``` -### Prerequisites +``` +$ cd ror-social-scaffold +``` +## Prerequisites Ruby: 2.6.3 Rails: 5.2.3 Postgres: >=9.5 -### Setup +## Setup Instal gems with: @@ -37,17 +47,7 @@ Setup database with: rails db:migrate ``` -### Github Actions - -To make sure the linters' checks using Github Actions work properly, you should follow the next steps: - -1. On your recently forked repo, enable the GitHub Actions in the Actions tab. -2. Create the `feature/branch` and push. -3. Start working on your milestone as usual. -4. Open a PR from the `feature/branch` when your work is done. - - -### Usage +## Usage Start server with: @@ -57,27 +57,14 @@ Start server with: Open `http://localhost:3000/` in your browser. -### Run tests - -``` - rpsec --format documentation -``` - -> Tests will be added by Microverse students. There are no tests for initial features in order to make sure that students write all tests from scratch. +## AUTHOR -### Deployment +👤 **Verissimo Henry** -TBA - -## Authors - -TBA - -## 🤝 Contributing - -Contributions, issues and feature requests are welcome! - -Feel free to check the [issues page](issues/). +- Github: [@githubhandle](https://github.com/verissimohenry) +- Twitter: [@twitterhandle](https://twitter.com/verissimohenry) +- Linkedin: [linkedin](https://www.linkedin.com/in/henry-verissimo-618906167/) +- Email: verissimohenry04@gmail.com ## Show your support @@ -85,9 +72,11 @@ Give a ⭐️ if you like this project! ## Acknowledgments -TBA - -## 📝 License +- Hat tip to anyone whose code was used. +- Inspiration +- etc -TBA +## License +- This project is [MIT](https://opensource.org/licenses/MIT) licensed. +- This project is [creativecommons](https://creativecommons.org/licenses/by-nc/4.0/) licensed. \ No newline at end of file From 7237b248f614a9b86879b62d1728f82caedcfe4e Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 25 May 2021 16:05:25 +0100 Subject: [PATCH 02/32] add linters --- .github/workflows/linters.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index 0aaddbe710..d5ecec87cb 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -34,3 +34,4 @@ jobs: [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json - name: Stylelint Report run: npx stylelint "**/*.{css,scss}" + \ No newline at end of file From 3e30e04c48b0217488bd6514d52e2d07b049acb5 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Wed, 26 May 2021 10:50:55 +0100 Subject: [PATCH 03/32] ADD ERD FILE --- docs/Link to PDF | 1 + docs/StayInTouchERD (1).png | Bin 0 -> 66666 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/Link to PDF create mode 100644 docs/StayInTouchERD (1).png diff --git a/docs/Link to PDF b/docs/Link to PDF new file mode 100644 index 0000000000..429f7bfb8a --- /dev/null +++ b/docs/Link to PDF @@ -0,0 +1 @@ +https://lucid.app/lucidchart/invitations/accept/inv_e1f6f268-112f-4e85-883c-802bf03bac06?viewport_loc=-364%2C-20%2C4152%2C1752%2C0_0 \ No newline at end of file diff --git a/docs/StayInTouchERD (1).png b/docs/StayInTouchERD (1).png new file mode 100644 index 0000000000000000000000000000000000000000..bad457d46d03aa248829ff41f8287311b633ad03 GIT binary patch literal 66666 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
yer;DfSc;
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%0As**WFdNqJY!6;lJ-on5HAJJ}Iv0GYicC
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

literal 0
HcmV?d00001


From 12e1cc670528cacdfcc907ede6062c62d58f7532 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 10:55:37 +0100
Subject: [PATCH 04/32] add gemfile and erd file

---
 Gemfile.lock | 193 ++++++++++++++++++++++++++-------------------------
 1 file changed, 97 insertions(+), 96 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index b67d4b3306..453a8811e8 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,55 +1,55 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (5.2.4.1)
-      actionpack (= 5.2.4.1)
+    actioncable (5.2.5)
+      actionpack (= 5.2.5)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailer (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
+    actionmailer (5.2.5)
+      actionpack (= 5.2.5)
+      actionview (= 5.2.5)
+      activejob (= 5.2.5)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (5.2.4.1)
-      actionview (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionpack (5.2.5)
+      actionview (= 5.2.5)
+      activesupport (= 5.2.5)
       rack (~> 2.0, >= 2.0.8)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionview (5.2.5)
+      activesupport (= 5.2.5)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.3)
-    activejob (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activejob (5.2.5)
+      activesupport (= 5.2.5)
       globalid (>= 0.3.6)
-    activemodel (5.2.4.1)
-      activesupport (= 5.2.4.1)
-    activerecord (5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activemodel (5.2.5)
+      activesupport (= 5.2.5)
+    activerecord (5.2.5)
+      activemodel (= 5.2.5)
+      activesupport (= 5.2.5)
       arel (>= 9.0)
-    activestorage (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
-      marcel (~> 0.3.1)
-    activesupport (5.2.4.1)
+    activestorage (5.2.5)
+      actionpack (= 5.2.5)
+      activerecord (= 5.2.5)
+      marcel (~> 1.0.0)
+    activesupport (5.2.5)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
       tzinfo (~> 1.1)
     arel (9.0.0)
-    ast (2.4.0)
-    bcrypt (3.1.13)
+    ast (2.4.2)
+    bcrypt (3.1.16)
     bindex (0.8.1)
-    bootsnap (1.4.6)
+    bootsnap (1.7.3)
       msgpack (~> 1.0)
     builder (3.2.4)
-    byebug (11.1.1)
+    byebug (11.1.3)
     coffee-rails (4.2.2)
       coffee-script (>= 2.2.0)
       railties (>= 4.0.0)
@@ -57,116 +57,116 @@ GEM
       coffee-script-source
       execjs
     coffee-script-source (1.12.2)
-    concurrent-ruby (1.1.6)
+    concurrent-ruby (1.1.8)
     crass (1.0.6)
-    devise (4.7.1)
+    devise (4.7.3)
       bcrypt (~> 3.0)
       orm_adapter (~> 0.1)
       railties (>= 4.1.0)
       responders
       warden (~> 1.2.3)
-    diff-lcs (1.3)
-    erubi (1.9.0)
+    diff-lcs (1.4.4)
+    erubi (1.10.0)
     execjs (2.7.0)
-    ffi (1.12.2)
-    ffi (1.12.2-x64-mingw32)
+    ffi (1.15.0)
+    ffi (1.15.0-x64-mingw32)
     globalid (0.4.2)
       activesupport (>= 4.2.0)
-    i18n (1.8.2)
+    i18n (1.8.10)
       concurrent-ruby (~> 1.0)
-    jaro_winkler (1.5.4)
-    jbuilder (2.10.0)
+    jbuilder (2.11.2)
       activesupport (>= 5.0.0)
     listen (3.1.5)
       rb-fsevent (~> 0.9, >= 0.9.4)
       rb-inotify (~> 0.9, >= 0.9.7)
       ruby_dep (~> 1.2)
-    loofah (2.4.0)
+    loofah (2.9.1)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)
       mini_mime (>= 0.1.1)
-    marcel (0.3.3)
-      mimemagic (~> 0.3.2)
-    method_source (0.9.2)
-    mimemagic (0.3.4)
-    mini_mime (1.0.2)
+    marcel (1.0.1)
+    method_source (1.0.0)
+    mini_mime (1.1.0)
     mini_portile2 (2.5.0)
-    minitest (5.14.0)
-    msgpack (1.3.3)
-    msgpack (1.3.3-x64-mingw32)
-    nio4r (2.5.2)
-    nokogiri (1.11.1)
+    minitest (5.14.4)
+    msgpack (1.4.2)
+    nio4r (2.5.7)
+    nokogiri (1.11.3)
       mini_portile2 (~> 2.5.0)
       racc (~> 1.4)
-    nokogiri (1.11.1-x64-mingw32)
+    nokogiri (1.11.3-x64-mingw32)
       racc (~> 1.4)
     orm_adapter (0.5.0)
-    parallel (1.19.1)
-    parser (2.7.0.4)
-      ast (~> 2.4.0)
-    pg (1.2.2)
-    pg (1.2.2-x64-mingw32)
+    parallel (1.20.1)
+    parser (3.0.1.0)
+      ast (~> 2.4.1)
+    pg (1.2.3)
+    pg (1.2.3-x64-mingw32)
     puma (3.12.6)
     racc (1.5.2)
     rack (2.2.3)
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
-    rails (5.2.4.1)
-      actioncable (= 5.2.4.1)
-      actionmailer (= 5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
-      activestorage (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    rails (5.2.5)
+      actioncable (= 5.2.5)
+      actionmailer (= 5.2.5)
+      actionpack (= 5.2.5)
+      actionview (= 5.2.5)
+      activejob (= 5.2.5)
+      activemodel (= 5.2.5)
+      activerecord (= 5.2.5)
+      activestorage (= 5.2.5)
+      activesupport (= 5.2.5)
       bundler (>= 1.3.0)
-      railties (= 5.2.4.1)
+      railties (= 5.2.5)
       sprockets-rails (>= 2.0.0)
     rails-dom-testing (2.0.3)
       activesupport (>= 4.2.0)
       nokogiri (>= 1.6)
     rails-html-sanitizer (1.3.0)
       loofah (~> 2.3)
-    railties (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    railties (5.2.5)
+      actionpack (= 5.2.5)
+      activesupport (= 5.2.5)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
     rainbow (3.0.0)
-    rake (13.0.1)
-    rb-fsevent (0.10.3)
+    rake (13.0.3)
+    rb-fsevent (0.10.4)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
-    responders (3.0.0)
+    regexp_parser (2.1.1)
+    responders (3.0.1)
       actionpack (>= 5.0)
       railties (>= 5.0)
-    rexml (3.2.4)
-    rspec (3.9.0)
-      rspec-core (~> 3.9.0)
-      rspec-expectations (~> 3.9.0)
-      rspec-mocks (~> 3.9.0)
-    rspec-core (3.9.1)
-      rspec-support (~> 3.9.1)
-    rspec-expectations (3.9.1)
+    rexml (3.2.5)
+    rspec (3.10.0)
+      rspec-core (~> 3.10.0)
+      rspec-expectations (~> 3.10.0)
+      rspec-mocks (~> 3.10.0)
+    rspec-core (3.10.1)
+      rspec-support (~> 3.10.0)
+    rspec-expectations (3.10.1)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
-    rspec-mocks (3.9.1)
+      rspec-support (~> 3.10.0)
+    rspec-mocks (3.10.2)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
-    rspec-support (3.9.2)
-    rubocop (0.80.1)
-      jaro_winkler (~> 1.5.1)
+      rspec-support (~> 3.10.0)
+    rspec-support (3.10.2)
+    rubocop (1.12.1)
       parallel (~> 1.10)
-      parser (>= 2.7.0.1)
+      parser (>= 3.0.0.0)
       rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.8, < 3.0)
       rexml
+      rubocop-ast (>= 1.2.0, < 2.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (>= 1.4.0, < 1.7)
-    ruby-progressbar (1.10.1)
+      unicode-display_width (>= 1.4.0, < 3.0)
+    rubocop-ast (1.4.1)
+      parser (>= 2.7.1.5)
+    ruby-progressbar (1.11.0)
     ruby_dep (1.5.0)
     sass (3.7.4)
       sass-listen (~> 4.0.0)
@@ -179,38 +179,38 @@ GEM
       sprockets (>= 2.8, < 4.0)
       sprockets-rails (>= 2.0, < 4.0)
       tilt (>= 1.1, < 3)
-    spring (2.1.0)
+    spring (2.1.1)
     spring-watcher-listen (2.0.1)
       listen (>= 2.7, < 4.0)
       spring (>= 1.2, < 3.0)
     sprockets (3.7.2)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
-    sprockets-rails (3.2.1)
+    sprockets-rails (3.2.2)
       actionpack (>= 4.0)
       activesupport (>= 4.0)
       sprockets (>= 3.0.0)
-    thor (1.0.1)
+    thor (1.1.0)
     thread_safe (0.3.6)
     tilt (2.0.10)
     turbolinks (5.2.1)
       turbolinks-source (~> 5.2)
     turbolinks-source (5.2.0)
-    tzinfo (1.2.6)
+    tzinfo (1.2.9)
       thread_safe (~> 0.1)
-    tzinfo-data (1.2020.1)
+    tzinfo-data (1.2021.1)
       tzinfo (>= 1.0.0)
     uglifier (4.2.0)
       execjs (>= 0.3.0, < 3)
-    unicode-display_width (1.6.1)
-    warden (1.2.8)
-      rack (>= 2.0.6)
+    unicode-display_width (2.0.0)
+    warden (1.2.9)
+      rack (>= 2.0.9)
     web-console (3.7.0)
       actionview (>= 5.0)
       activemodel (>= 5.0)
       bindex (>= 0.4.0)
       railties (>= 5.0)
-    websocket-driver (0.7.1)
+    websocket-driver (0.7.3)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.5)
 
@@ -243,3 +243,4 @@ RUBY VERSION
 
 BUNDLED WITH
    2.1.2
+   
\ No newline at end of file

From 3cd7419a37a388273a02e4726f38944f290d05bb Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 11:04:11 +0100
Subject: [PATCH 05/32] add linter file

---
 .rubocop.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.rubocop.yml b/.rubocop.yml
index 89f3b6bdbd..0e69600a6a 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -56,4 +56,4 @@ Style/HashEachMethods:
 Style/HashTransformKeys:
   Enabled: false
 Style/HashTransformValues:
-  Enabled: false
\ No newline at end of file
+  Enabled: false

From d71528a7321c58cdb27f021c67e280b92e00ec83 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 13:07:53 +0100
Subject: [PATCH 06/32] add linter file

---
 .github/workflows/linters.yml |  4 ++--
 .rubocop.yml                  | 24 ++++++++++++------------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index bd44d15a92..75062298e7 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -27,10 +27,10 @@ jobs:
       - uses: actions/checkout@v2
       - uses: actions/setup-node@v1
         with:
-          node-version: "12.x"
+          node-version: '12.x'
       - name: Setup Stylelint
         run: |
           npm install --save-dev stylelint@13.3.x stylelint-scss@3.17.x stylelint-config-standard@20.0.x stylelint-csstree-validator
           [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json
       - name: Stylelint Report
-        run: npx stylelint "**/*.{css,scss}"
\ No newline at end of file
+        run: npx stylelint "**/*.{css,scss}"
diff --git a/.rubocop.yml b/.rubocop.yml
index 89f3b6bdbd..8b4fee00de 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,11 +1,11 @@
 AllCops:
   Exclude:
-    - "db/**/*"
-    - "bin/*"
-    - "config/**/*"
-    - "Guardfile"
-    - "Rakefile"
-    - "node_modules/**/*"
+    - 'db/**/*'
+    - 'bin/*'
+    - 'config/**/*'
+    - 'Guardfile'
+    - 'Rakefile'
+    - 'node_modules/**/*'
 
   DisplayCopNames: true
 
@@ -13,18 +13,18 @@ Layout/LineLength:
   Max: 120
 Metrics/MethodLength:
   Include:
-    - "app/controllers/*"
-    - "app/models/*"
+    - 'app/controllers/*'
+    - 'app/models/*'
   Max: 20
 Metrics/AbcSize:
   Include:
-    - "app/controllers/*"
-    - "app/models/*"
+    - 'app/controllers/*'
+    - 'app/models/*'
   Max: 50
 Metrics/ClassLength:
   Max: 150
 Metrics/BlockLength:
-  ExcludedMethods: ["describe"]
+  ExcludedMethods: ['describe']
   Max: 30
 
 Style/Documentation:
@@ -56,4 +56,4 @@ Style/HashEachMethods:
 Style/HashTransformKeys:
   Enabled: false
 Style/HashTransformValues:
-  Enabled: false
\ No newline at end of file
+  Enabled: false

From a4183be45c97f96bb978d719e8a002c641d51bf1 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 13:11:28 +0100
Subject: [PATCH 07/32] modify linters and genfile

---
 .github/workflows/linters.yml |  3 +--
 .rubocop.yml                  | 22 +++++++++++-----------
 Gemfile.lock                  |  1 -
 3 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index d5ecec87cb..75062298e7 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -27,11 +27,10 @@ jobs:
       - uses: actions/checkout@v2
       - uses: actions/setup-node@v1
         with:
-          node-version: "12.x"
+          node-version: '12.x'
       - name: Setup Stylelint
         run: |
           npm install --save-dev stylelint@13.3.x stylelint-scss@3.17.x stylelint-config-standard@20.0.x stylelint-csstree-validator
           [ -f .stylelintrc.json ] || wget https://raw.githubusercontent.com/microverseinc/linters-config/master/ror/.stylelintrc.json
       - name: Stylelint Report
         run: npx stylelint "**/*.{css,scss}"
-        
\ No newline at end of file
diff --git a/.rubocop.yml b/.rubocop.yml
index 0e69600a6a..8b4fee00de 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,11 +1,11 @@
 AllCops:
   Exclude:
-    - "db/**/*"
-    - "bin/*"
-    - "config/**/*"
-    - "Guardfile"
-    - "Rakefile"
-    - "node_modules/**/*"
+    - 'db/**/*'
+    - 'bin/*'
+    - 'config/**/*'
+    - 'Guardfile'
+    - 'Rakefile'
+    - 'node_modules/**/*'
 
   DisplayCopNames: true
 
@@ -13,18 +13,18 @@ Layout/LineLength:
   Max: 120
 Metrics/MethodLength:
   Include:
-    - "app/controllers/*"
-    - "app/models/*"
+    - 'app/controllers/*'
+    - 'app/models/*'
   Max: 20
 Metrics/AbcSize:
   Include:
-    - "app/controllers/*"
-    - "app/models/*"
+    - 'app/controllers/*'
+    - 'app/models/*'
   Max: 50
 Metrics/ClassLength:
   Max: 150
 Metrics/BlockLength:
-  ExcludedMethods: ["describe"]
+  ExcludedMethods: ['describe']
   Max: 30
 
 Style/Documentation:
diff --git a/Gemfile.lock b/Gemfile.lock
index 453a8811e8..e5150883a2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -243,4 +243,3 @@ RUBY VERSION
 
 BUNDLED WITH
    2.1.2
-   
\ No newline at end of file

From 9a04826ad9b3ca0df78b89900833353f5cabbee9 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 17:13:51 +0100
Subject: [PATCH 08/32] add gem file

---
 .ruby-version |   2 +-
 Gemfile       |   2 +-
 Gemfile.lock  | 200 +++++++++++++++++++++++++-------------------------
 3 files changed, 102 insertions(+), 102 deletions(-)

diff --git a/.ruby-version b/.ruby-version
index 9aa34646dc..fbafd6b600 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.7.0
\ No newline at end of file
+2.7.2
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
index 67b156b339..d432d58fec 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
 source 'https://rubygems.org'
 git_source(:github) { |repo| "https://github.com/#{repo}.git" }
 
-ruby '2.7.0'
+ruby '2.7.2'
 
 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
 gem 'rails', '~> 5.2.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index b67d4b3306..aec0feaa5a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,55 +1,55 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (5.2.4.1)
-      actionpack (= 5.2.4.1)
+    actioncable (5.2.6)
+      actionpack (= 5.2.6)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailer (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
+    actionmailer (5.2.6)
+      actionpack (= 5.2.6)
+      actionview (= 5.2.6)
+      activejob (= 5.2.6)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (5.2.4.1)
-      actionview (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionpack (5.2.6)
+      actionview (= 5.2.6)
+      activesupport (= 5.2.6)
       rack (~> 2.0, >= 2.0.8)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionview (5.2.6)
+      activesupport (= 5.2.6)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.3)
-    activejob (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activejob (5.2.6)
+      activesupport (= 5.2.6)
       globalid (>= 0.3.6)
-    activemodel (5.2.4.1)
-      activesupport (= 5.2.4.1)
-    activerecord (5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activemodel (5.2.6)
+      activesupport (= 5.2.6)
+    activerecord (5.2.6)
+      activemodel (= 5.2.6)
+      activesupport (= 5.2.6)
       arel (>= 9.0)
-    activestorage (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
-      marcel (~> 0.3.1)
-    activesupport (5.2.4.1)
+    activestorage (5.2.6)
+      actionpack (= 5.2.6)
+      activerecord (= 5.2.6)
+      marcel (~> 1.0.0)
+    activesupport (5.2.6)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
       tzinfo (~> 1.1)
     arel (9.0.0)
-    ast (2.4.0)
-    bcrypt (3.1.13)
+    ast (2.4.2)
+    bcrypt (3.1.16)
     bindex (0.8.1)
-    bootsnap (1.4.6)
+    bootsnap (1.7.5)
       msgpack (~> 1.0)
     builder (3.2.4)
-    byebug (11.1.1)
+    byebug (11.1.3)
     coffee-rails (4.2.2)
       coffee-script (>= 2.2.0)
       railties (>= 4.0.0)
@@ -57,116 +57,116 @@ GEM
       coffee-script-source
       execjs
     coffee-script-source (1.12.2)
-    concurrent-ruby (1.1.6)
+    concurrent-ruby (1.1.8)
     crass (1.0.6)
-    devise (4.7.1)
+    devise (4.8.0)
       bcrypt (~> 3.0)
       orm_adapter (~> 0.1)
       railties (>= 4.1.0)
       responders
       warden (~> 1.2.3)
-    diff-lcs (1.3)
-    erubi (1.9.0)
-    execjs (2.7.0)
-    ffi (1.12.2)
-    ffi (1.12.2-x64-mingw32)
+    diff-lcs (1.4.4)
+    erubi (1.10.0)
+    execjs (2.8.1)
+    ffi (1.15.1)
+    ffi (1.15.1-x64-mingw32)
     globalid (0.4.2)
       activesupport (>= 4.2.0)
-    i18n (1.8.2)
+    i18n (1.8.10)
       concurrent-ruby (~> 1.0)
-    jaro_winkler (1.5.4)
-    jbuilder (2.10.0)
+    jbuilder (2.11.2)
       activesupport (>= 5.0.0)
     listen (3.1.5)
       rb-fsevent (~> 0.9, >= 0.9.4)
       rb-inotify (~> 0.9, >= 0.9.7)
       ruby_dep (~> 1.2)
-    loofah (2.4.0)
+    loofah (2.9.1)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)
       mini_mime (>= 0.1.1)
-    marcel (0.3.3)
-      mimemagic (~> 0.3.2)
-    method_source (0.9.2)
-    mimemagic (0.3.4)
-    mini_mime (1.0.2)
-    mini_portile2 (2.5.0)
-    minitest (5.14.0)
-    msgpack (1.3.3)
-    msgpack (1.3.3-x64-mingw32)
-    nio4r (2.5.2)
-    nokogiri (1.11.1)
+    marcel (1.0.1)
+    method_source (1.0.0)
+    mini_mime (1.1.0)
+    mini_portile2 (2.5.1)
+    minitest (5.14.4)
+    msgpack (1.4.2)
+    nio4r (2.5.7)
+    nokogiri (1.11.6)
       mini_portile2 (~> 2.5.0)
       racc (~> 1.4)
-    nokogiri (1.11.1-x64-mingw32)
+    nokogiri (1.11.6-x64-mingw32)
       racc (~> 1.4)
     orm_adapter (0.5.0)
-    parallel (1.19.1)
-    parser (2.7.0.4)
-      ast (~> 2.4.0)
-    pg (1.2.2)
-    pg (1.2.2-x64-mingw32)
+    parallel (1.20.1)
+    parser (3.0.1.1)
+      ast (~> 2.4.1)
+    pg (1.2.3)
+    pg (1.2.3-x64-mingw32)
     puma (3.12.6)
     racc (1.5.2)
     rack (2.2.3)
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
-    rails (5.2.4.1)
-      actioncable (= 5.2.4.1)
-      actionmailer (= 5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
-      activestorage (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    rails (5.2.6)
+      actioncable (= 5.2.6)
+      actionmailer (= 5.2.6)
+      actionpack (= 5.2.6)
+      actionview (= 5.2.6)
+      activejob (= 5.2.6)
+      activemodel (= 5.2.6)
+      activerecord (= 5.2.6)
+      activestorage (= 5.2.6)
+      activesupport (= 5.2.6)
       bundler (>= 1.3.0)
-      railties (= 5.2.4.1)
+      railties (= 5.2.6)
       sprockets-rails (>= 2.0.0)
     rails-dom-testing (2.0.3)
       activesupport (>= 4.2.0)
       nokogiri (>= 1.6)
     rails-html-sanitizer (1.3.0)
       loofah (~> 2.3)
-    railties (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    railties (5.2.6)
+      actionpack (= 5.2.6)
+      activesupport (= 5.2.6)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
     rainbow (3.0.0)
-    rake (13.0.1)
-    rb-fsevent (0.10.3)
+    rake (13.0.3)
+    rb-fsevent (0.11.0)
     rb-inotify (0.10.1)
       ffi (~> 1.0)
-    responders (3.0.0)
+    regexp_parser (2.1.1)
+    responders (3.0.1)
       actionpack (>= 5.0)
       railties (>= 5.0)
-    rexml (3.2.4)
-    rspec (3.9.0)
-      rspec-core (~> 3.9.0)
-      rspec-expectations (~> 3.9.0)
-      rspec-mocks (~> 3.9.0)
-    rspec-core (3.9.1)
-      rspec-support (~> 3.9.1)
-    rspec-expectations (3.9.1)
+    rexml (3.2.5)
+    rspec (3.10.0)
+      rspec-core (~> 3.10.0)
+      rspec-expectations (~> 3.10.0)
+      rspec-mocks (~> 3.10.0)
+    rspec-core (3.10.1)
+      rspec-support (~> 3.10.0)
+    rspec-expectations (3.10.1)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
-    rspec-mocks (3.9.1)
+      rspec-support (~> 3.10.0)
+    rspec-mocks (3.10.2)
       diff-lcs (>= 1.2.0, < 2.0)
-      rspec-support (~> 3.9.0)
-    rspec-support (3.9.2)
-    rubocop (0.80.1)
-      jaro_winkler (~> 1.5.1)
+      rspec-support (~> 3.10.0)
+    rspec-support (3.10.2)
+    rubocop (1.15.0)
       parallel (~> 1.10)
-      parser (>= 2.7.0.1)
+      parser (>= 3.0.0.0)
       rainbow (>= 2.2.2, < 4.0)
+      regexp_parser (>= 1.8, < 3.0)
       rexml
+      rubocop-ast (>= 1.5.0, < 2.0)
       ruby-progressbar (~> 1.7)
-      unicode-display_width (>= 1.4.0, < 1.7)
-    ruby-progressbar (1.10.1)
+      unicode-display_width (>= 1.4.0, < 3.0)
+    rubocop-ast (1.6.0)
+      parser (>= 3.0.1.1)
+    ruby-progressbar (1.11.0)
     ruby_dep (1.5.0)
     sass (3.7.4)
       sass-listen (~> 4.0.0)
@@ -179,38 +179,38 @@ GEM
       sprockets (>= 2.8, < 4.0)
       sprockets-rails (>= 2.0, < 4.0)
       tilt (>= 1.1, < 3)
-    spring (2.1.0)
+    spring (2.1.1)
     spring-watcher-listen (2.0.1)
       listen (>= 2.7, < 4.0)
       spring (>= 1.2, < 3.0)
     sprockets (3.7.2)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
-    sprockets-rails (3.2.1)
+    sprockets-rails (3.2.2)
       actionpack (>= 4.0)
       activesupport (>= 4.0)
       sprockets (>= 3.0.0)
-    thor (1.0.1)
+    thor (1.1.0)
     thread_safe (0.3.6)
     tilt (2.0.10)
     turbolinks (5.2.1)
       turbolinks-source (~> 5.2)
     turbolinks-source (5.2.0)
-    tzinfo (1.2.6)
+    tzinfo (1.2.9)
       thread_safe (~> 0.1)
-    tzinfo-data (1.2020.1)
+    tzinfo-data (1.2021.1)
       tzinfo (>= 1.0.0)
     uglifier (4.2.0)
       execjs (>= 0.3.0, < 3)
-    unicode-display_width (1.6.1)
-    warden (1.2.8)
-      rack (>= 2.0.6)
+    unicode-display_width (2.0.0)
+    warden (1.2.9)
+      rack (>= 2.0.9)
     web-console (3.7.0)
       actionview (>= 5.0)
       activemodel (>= 5.0)
       bindex (>= 0.4.0)
       railties (>= 5.0)
-    websocket-driver (0.7.1)
+    websocket-driver (0.7.4)
       websocket-extensions (>= 0.1.0)
     websocket-extensions (0.1.5)
 
@@ -239,7 +239,7 @@ DEPENDENCIES
   web-console (>= 3.3.0)
 
 RUBY VERSION
-   ruby 2.7.0p0
+   ruby 2.7.2p137
 
 BUNDLED WITH
-   2.1.2
+   2.2.16

From 3b411136be8d01b08195925955a9c4589337ce07 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Wed, 26 May 2021 17:37:36 +0100
Subject: [PATCH 09/32] add gem files

---
 .ruby-version | 2 +-
 Gemfile       | 2 +-
 Gemfile.lock  | 6 ++----
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/.ruby-version b/.ruby-version
index 9aa34646dc..37c2961c24 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.7.0
\ No newline at end of file
+2.7.2
diff --git a/Gemfile b/Gemfile
index 67b156b339..d432d58fec 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
 source 'https://rubygems.org'
 git_source(:github) { |repo| "https://github.com/#{repo}.git" }
 
-ruby '2.7.0'
+ruby '2.7.2'
 
 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
 gem 'rails', '~> 5.2.4'
diff --git a/Gemfile.lock b/Gemfile.lock
index e5150883a2..c05e9d2830 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -198,8 +198,6 @@ GEM
     turbolinks-source (5.2.0)
     tzinfo (1.2.9)
       thread_safe (~> 0.1)
-    tzinfo-data (1.2021.1)
-      tzinfo (>= 1.0.0)
     uglifier (4.2.0)
       execjs (>= 0.3.0, < 3)
     unicode-display_width (2.0.0)
@@ -239,7 +237,7 @@ DEPENDENCIES
   web-console (>= 3.3.0)
 
 RUBY VERSION
-   ruby 2.7.0p0
+   ruby 2.7.2p137
 
 BUNDLED WITH
-   2.1.2
+   2.2.16

From dcfcb24ceb815387d86519c7adaaa3b108b2e3e7 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Thu, 27 May 2021 14:05:19 +0100
Subject: [PATCH 10/32] create migration file and friendship.rb v1

---
 app/models/friendship.rb                        |  4 ++++
 db/migrate/20210527125920_create_friendships.rb | 12 ++++++++++++
 2 files changed, 16 insertions(+)
 create mode 100644 app/models/friendship.rb
 create mode 100644 db/migrate/20210527125920_create_friendships.rb

diff --git a/app/models/friendship.rb b/app/models/friendship.rb
new file mode 100644
index 0000000000..5210d88d1f
--- /dev/null
+++ b/app/models/friendship.rb
@@ -0,0 +1,4 @@
+class Friendship < ApplicationRecord
+  belongs_to :user
+  belongs_to :friend, :class_name => "User"
+end
diff --git a/db/migrate/20210527125920_create_friendships.rb b/db/migrate/20210527125920_create_friendships.rb
new file mode 100644
index 0000000000..9ccd91d1b6
--- /dev/null
+++ b/db/migrate/20210527125920_create_friendships.rb
@@ -0,0 +1,12 @@
+class CreateFriendships < ActiveRecord::Migration[5.2]
+  def change
+    create_table :friendships do |t|
+      t.references :user, index: true, foreign_key: true
+      t.references :friend, index: true
+      t.boolean :confirmed
+
+      t.timestamps null: false
+    end
+    add_foreign_key :friendships, :users, column: :friend_id
+  end
+end

From 739f885c619e2fcca11b8d3cf7b9b9179df240e1 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Thu, 27 May 2021 15:07:16 +0100
Subject: [PATCH 11/32] add new erd link and screenshort

---
 docs/Link to PDF                             |   2 +-
 docs/Screenshot from 2021-05-27 15-03-13.png | Bin 0 -> 43940 bytes
 docs/StayInTouchERD (1).png                  | Bin 66666 -> 0 bytes
 3 files changed, 1 insertion(+), 1 deletion(-)
 create mode 100644 docs/Screenshot from 2021-05-27 15-03-13.png
 delete mode 100644 docs/StayInTouchERD (1).png

diff --git a/docs/Link to PDF b/docs/Link to PDF
index 429f7bfb8a..3fa5c026db 100644
--- a/docs/Link to PDF	
+++ b/docs/Link to PDF	
@@ -1 +1 @@
-https://lucid.app/lucidchart/invitations/accept/inv_e1f6f268-112f-4e85-883c-802bf03bac06?viewport_loc=-364%2C-20%2C4152%2C1752%2C0_0
\ No newline at end of file
+https://lucid.app/lucidchart/invitations/accept/inv_e1f6f268-112f-4e85-883c-802bf03bac06
\ No newline at end of file
diff --git a/docs/Screenshot from 2021-05-27 15-03-13.png b/docs/Screenshot from 2021-05-27 15-03-13.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d55accc447ddf9e8bb7ea38e65316c863cb218a
GIT binary patch
literal 43940
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
Y4F1^}8#m|hUk>&^c6bcvRt`Z2_8VQ80
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
yer;DfSc;
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%0As**WFdNqJY!6;lJ-on5HAJJ}Iv0GYicC
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


From 62516907faebce82981e0de63c3a8ace1fbbc548 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Thu, 27 May 2021 15:59:43 +0100
Subject: [PATCH 12/32] fix linter error

---
 app/models/friendship.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/models/friendship.rb b/app/models/friendship.rb
index 5210d88d1f..b334b963e5 100644
--- a/app/models/friendship.rb
+++ b/app/models/friendship.rb
@@ -1,4 +1,4 @@
 class Friendship < ApplicationRecord
   belongs_to :user
-  belongs_to :friend, :class_name => "User"
+  belongs_to :friend, class_name: 'User'
 end

From 77476e2a666fa5092f59c7a460c48f5368070bfc Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Fri, 28 May 2021 11:12:21 +0100
Subject: [PATCH 13/32] modify user model

---
 app/models/user.rb | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/app/models/user.rb b/app/models/user.rb
index e97f1363c0..70e817913d 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -9,4 +9,30 @@ class User < ApplicationRecord
   has_many :posts
   has_many :comments, dependent: :destroy
   has_many :likes, dependent: :destroy
-end
+  has_many :friendships
+  has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id'
+
+  def friends
+    friends_array = friendships.map { |friendship| friendship.friend if friendship.confirmed }
+    friends_array += inverse_friendships.map { |friendship| friendship.user if friendship.confirmed }
+    friends_array.compact
+  end
+
+  def pending_friends
+    friendships.map { |friendship| friendship.friend unless friendship.confirmed }.compact
+  end
+
+  def friend_requests
+    inverse_friendships.map { |friendship| friendship.user unless friendship.confirmed }.compact
+  end
+
+  def confirm_friend(user)
+    friendship = inverse_friendships.find { |f| f.user == user }
+    friendship.confirmed = true
+    friendship.save
+  end
+
+  def friend?(user)
+    friends.include?(user)
+  end
+end
\ No newline at end of file

From c9ac256dee76eed2001c3013e6da319150bbb832 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Fri, 28 May 2021 11:24:41 +0100
Subject: [PATCH 14/32] modify user model

---
 app/models/user.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/models/user.rb b/app/models/user.rb
index 70e817913d..b1997ef4af 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -35,4 +35,4 @@ def confirm_friend(user)
   def friend?(user)
     friends.include?(user)
   end
-end
\ No newline at end of file
+end

From 83e67c0315a5521e341847de5645658360176e68 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Fri, 28 May 2021 13:52:49 +0100
Subject: [PATCH 15/32] modify friendship.rb model

---
 app/models/friendship.rb | 1 +
 1 file changed, 1 insertion(+)

diff --git a/app/models/friendship.rb b/app/models/friendship.rb
index b334b963e5..dcb3085891 100644
--- a/app/models/friendship.rb
+++ b/app/models/friendship.rb
@@ -1,4 +1,5 @@
 class Friendship < ApplicationRecord
   belongs_to :user
   belongs_to :friend, class_name: 'User'
+  validates_presence_of :user_id, :friend_id
 end

From 9f609b4309bb97372fec49517ae705fd31cb7738 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Fri, 28 May 2021 16:26:53 +0100
Subject: [PATCH 16/32] modify user id model and add foreign key

---
 Gemfile.lock       |  2 +-
 app/models/user.rb | 10 ++++++++++
 db/schema.rb       |  2 ++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index 60780584ba..aec0feaa5a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -128,7 +128,7 @@ GEM
       loofah (~> 2.3)
     railties (5.2.6)
       actionpack (= 5.2.6)
-      activesupport (= 5.2.6)t
+      activesupport (= 5.2.6)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
diff --git a/app/models/user.rb b/app/models/user.rb
index b1997ef4af..423bc71830 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -11,6 +11,12 @@ class User < ApplicationRecord
   has_many :likes, dependent: :destroy
   has_many :friendships
   has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id'
+  has_many :confirmed_friendships, -> { where confirmed: true }, class_name: 'Friendship'
+  has_many :friends, through: :confirmed_friendships
+  has_many :pending_friendships, -> { where confirmed: false }, class_name: 'Friendship', foreign_key: 'user_id'
+  has_many :pending_friends, through: :pending_friendships, source: :friend
+  has_many :inverted_friendships, -> { where confirmed: false }, class_name: 'Friendship', foreign_key: 'friend_id'
+  has_many :friend_requests, through: :inverted_friendships
 
   def friends
     friends_array = friendships.map { |friendship| friendship.friend if friendship.confirmed }
@@ -35,4 +41,8 @@ def confirm_friend(user)
   def friend?(user)
     friends.include?(user)
   end
+
+  def friends_and_own_posts
+    Post.where(user: (friends.to_a << self))
+  end
 end
diff --git a/db/schema.rb b/db/schema.rb
index 30ee9f3fad..27fe776bea 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -54,4 +54,6 @@
     t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
   end
 
+  add_foreign_key "friendships", "users"
+  add_foreign_key "friendships", "users", column: "friend_id"
 end

From a45a304f5457f18c5a65fd92ca31319eab271d7a Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Mon, 31 May 2021 12:54:48 +0100
Subject: [PATCH 17/32] add rails helper spec

---
 spec/rails_helper.rb | 64 ++++++++++++++++++++++++++++++++++++++++++++
 spec/spec_helper.rb  |  6 +----
 2 files changed, 65 insertions(+), 5 deletions(-)
 create mode 100644 spec/rails_helper.rb

diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
new file mode 100644
index 0000000000..30ebb5588e
--- /dev/null
+++ b/spec/rails_helper.rb
@@ -0,0 +1,64 @@
+# This file is copied to spec/ when you run 'rails generate rspec:install'
+require 'spec_helper'
+ENV['RAILS_ENV'] ||= 'test'
+require File.expand_path('../config/environment', __dir__)
+# Prevent database truncation if the environment is production
+abort('The Rails environment is running in production mode!') if Rails.env.production?
+require 'rspec/rails'
+# Add additional requires below this line. Rails is not loaded until this point!
+
+# Requires supporting ruby files with custom matchers and macros, etc, in
+# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
+# run as spec files by default. This means that files in spec/support that end
+# in _spec.rb will both be required and run as specs, causing the specs to be
+# run twice. It is recommended that you do not name files matching this glob to
+# end with _spec.rb. You can configure this pattern with the --pattern
+# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
+#
+# The following line is provided for convenience purposes. It has the downside
+# of increasing the boot-up time by auto-requiring all files in the support
+# directory. Alternatively, in the individual `*_spec.rb` files, manually
+# require only the support files necessary.
+#
+# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }
+
+# Checks for pending migrations and applies them before tests are run.
+# If you are not using ActiveRecord, you can remove these lines.
+begin
+  ActiveRecord::Migration.maintain_test_schema!
+rescue ActiveRecord::PendingMigrationError => e
+  puts e.to_s.strip
+  exit 1
+end
+RSpec.configure do |config|
+  # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
+  config.fixture_path = "#{::Rails.root}/spec/fixtures"
+
+  # If you're not using ActiveRecord, or you'd prefer not to run each of your
+  # examples within a transaction, remove the following line or assign false
+  # instead of true.
+  config.use_transactional_fixtures = true
+
+  # You can uncomment this line to turn off ActiveRecord support entirely.
+  # config.use_active_record = false
+
+  # RSpec Rails can automatically mix in different behaviours to your tests
+  # based on their file location, for example enabling you to call `get` and
+  # `post` in specs under `spec/controllers`.
+  #
+  # You can disable this behaviour by removing the line below, and instead
+  # explicitly tag your specs with their type, e.g.:
+  #
+  #     RSpec.describe UsersController, type: :controller do
+  #       # ...
+  #     end
+  #
+  # The different available types are documented in the features, such as in
+  # https://relishapp.com/rspec/rspec-rails/docs
+  config.infer_spec_type_from_file_location!
+
+  # Filter lines from Rails gems in backtraces.
+  config.filter_rails_from_backtrace!
+  # arbitrary gems may also be filtered via:
+  # config.filter_gems_from_backtrace("gem name")
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index a403ac5360..15a38725be 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,4 +1,4 @@
-# This file was generated by the `rspec --init` command. Conventionally, all
+# This file was generated by the `rails generate rspec:install` command. Conventionally, all
 # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
 # The generated `.rspec` file contains `--require spec_helper` which will cause
 # this file to always be loaded, without a need to explicitly require it in any
@@ -65,10 +65,6 @@
   #   #   - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
   #   config.disable_monkey_patching!
   #
-  #   # This setting enables warnings. It's recommended, but in some cases may
-  #   # be too noisy due to issues in dependencies.
-  #   config.warnings = true
-  #
   #   # Many RSpec users commonly either run the entire suite or an individual
   #   # file, and it's useful to allow more verbose output when running an
   #   # individual spec file.

From 9856141936114f8f677fbc2e2394ab011d5b0567 Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Mon, 31 May 2021 16:21:37 +0100
Subject: [PATCH 18/32] add gem file,and generate spec friendship

---
 Gemfile                        |  1 +
 Gemfile.lock                   | 11 +++++++++--
 db/schema.rb                   | 12 +++++++++++-
 spec/models/friendship_spec.rb |  5 +++++
 4 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 spec/models/friendship_spec.rb

diff --git a/Gemfile b/Gemfile
index d432d58fec..84ba6a7c32 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,6 +13,7 @@ gem 'puma', '~> 3.12'
 gem 'sass-rails', '~> 5.0'
 # Use Uglifier as compressor for JavaScript assets
 gem 'uglifier', '>= 1.3.0'
+gem 'rspec-rails', '~> 5.0', '>= 5.0.1'
 # See https://github.com/rails/execjs#readme for more supported runtimes
 # gem 'mini_racer', platforms: :ruby
 
diff --git a/Gemfile.lock b/Gemfile.lock
index aec0feaa5a..7a56644bd2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -154,6 +154,14 @@ GEM
     rspec-mocks (3.10.2)
       diff-lcs (>= 1.2.0, < 2.0)
       rspec-support (~> 3.10.0)
+    rspec-rails (5.0.1)
+      actionpack (>= 5.2)
+      activesupport (>= 5.2)
+      railties (>= 5.2)
+      rspec-core (~> 3.10)
+      rspec-expectations (~> 3.10)
+      rspec-mocks (~> 3.10)
+      rspec-support (~> 3.10)
     rspec-support (3.10.2)
     rubocop (1.15.0)
       parallel (~> 1.10)
@@ -198,8 +206,6 @@ GEM
     turbolinks-source (5.2.0)
     tzinfo (1.2.9)
       thread_safe (~> 0.1)
-    tzinfo-data (1.2021.1)
-      tzinfo (>= 1.0.0)
     uglifier (4.2.0)
       execjs (>= 0.3.0, < 3)
     unicode-display_width (2.0.0)
@@ -229,6 +235,7 @@ DEPENDENCIES
   puma (~> 3.12)
   rails (~> 5.2.4)
   rspec
+  rspec-rails (~> 5.0, >= 5.0.1)
   rubocop
   sass-rails (~> 5.0)
   spring
diff --git a/db/schema.rb b/db/schema.rb
index 27fe776bea..38d759ef16 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2020_02_04_165841) do
+ActiveRecord::Schema.define(version: 2021_05_27_125920) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -25,6 +25,16 @@
     t.index ["user_id"], name: "index_comments_on_user_id"
   end
 
+  create_table "friendships", force: :cascade do |t|
+    t.bigint "user_id"
+    t.bigint "friend_id"
+    t.boolean "confirmed"
+    t.datetime "created_at", null: false
+    t.datetime "updated_at", null: false
+    t.index ["friend_id"], name: "index_friendships_on_friend_id"
+    t.index ["user_id"], name: "index_friendships_on_user_id"
+  end
+
   create_table "likes", force: :cascade do |t|
     t.integer "post_id"
     t.integer "user_id"
diff --git a/spec/models/friendship_spec.rb b/spec/models/friendship_spec.rb
new file mode 100644
index 0000000000..0ec63d42dd
--- /dev/null
+++ b/spec/models/friendship_spec.rb
@@ -0,0 +1,5 @@
+require 'rails_helper'
+
+RSpec.describe Friendship, type: :model do
+  pending "add some examples to (or delete) #{__FILE__}"
+end

From 9371d7140d760595c1e7b08d4b57326a0d7931ee Mon Sep 17 00:00:00 2001
From: verissimohenry 
Date: Mon, 31 May 2021 16:46:30 +0100
Subject: [PATCH 19/32] add frinshipcontroller, modify index html erb and route
 file

---
 app/controllers/friendships_controller.rb | 21 +++++++++++++++++++++
 app/views/users/index.html.erb            | 23 +++++++++++++++++++++++
 config/routes.rb                          |  5 ++++-
 3 files changed, 48 insertions(+), 1 deletion(-)
 create mode 100644 app/controllers/friendships_controller.rb

diff --git a/app/controllers/friendships_controller.rb b/app/controllers/friendships_controller.rb
new file mode 100644
index 0000000000..c32f7f7951
--- /dev/null
+++ b/app/controllers/friendships_controller.rb
@@ -0,0 +1,21 @@
+class FriendshipsController < ApplicationController
+  def create
+    @user = User.find(params[:format])
+    @friendship = current_user.friendships.create(friend_id: params[:format])
+    @friendship.save
+    redirect_back(fallback_location: root_path)
+  end
+
+  def update
+    @friendship = Friendship.find(params[:id])
+    @friendship.confirmed = true
+    @friendship.save
+    redirect_back(fallback_location: root_path)
+  end
+
+  def destroy
+    @friendship = Friendship.find(params[:id])
+    @friendship.destroy
+    redirect_back(fallback_location: root_path)
+  end
+end
diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb
index 70e973bbc8..7656cf013f 100644
--- a/app/views/users/index.html.erb
+++ b/app/views/users/index.html.erb
@@ -3,3 +3,26 @@
     <%= render @users %>
   
 
+
+

friends

+<% @friends.uniq.each do |friend| %> +<%= friend.name %>
+<% end%> + + +

+ +

recieved requests

+<% @friend_requests.each do |friend| %> +<%= friend.name %>
+<%= link_to 'Confirm', confirm_user_path(friend) %> +<%= link_to 'Deny', deny_user_path(friend) %> +<% end%> + + +

+ +

pending requests

+<% @pending_requests.each do |friend|%> +<%= friend.name %>
+<% end%> diff --git a/config/routes.rb b/config/routes.rb index d34298b198..b868c32dce 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,10 +5,13 @@ devise_for :users resources :users, only: [:index, :show] + resources :friendships, only: [:create, :destroy, :update] + + resources :posts, only: [:index, :create] do resources :comments, only: [:create] resources :likes, only: [:create, :destroy] end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html -end +end \ No newline at end of file From 6cd0aa8fab94a21df0b11218c2b76d73d2528d24 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Mon, 31 May 2021 16:49:28 +0100 Subject: [PATCH 20/32] add frinships.coffee file --- app/assets/javascripts/friendships.coffee | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 app/assets/javascripts/friendships.coffee diff --git a/app/assets/javascripts/friendships.coffee b/app/assets/javascripts/friendships.coffee new file mode 100644 index 0000000000..24f83d18bb --- /dev/null +++ b/app/assets/javascripts/friendships.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ From 6c71e8791c94c09ae911623b6d4cf26381eb3e28 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Mon, 31 May 2021 16:51:02 +0100 Subject: [PATCH 21/32] modify friendship rb file --- app/models/friendship.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/models/friendship.rb b/app/models/friendship.rb index dcb3085891..fcddccc77c 100644 --- a/app/models/friendship.rb +++ b/app/models/friendship.rb @@ -2,4 +2,11 @@ class Friendship < ApplicationRecord belongs_to :user belongs_to :friend, class_name: 'User' validates_presence_of :user_id, :friend_id + + def confirm_friend + update_attributes(confirmed: true) + Friendship.create!(friend_id: user_id, + user_id: friend_id, + confirmed: true) + end end From caf2f7b3b86cf879a1370138e770042f4c49c81d Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Mon, 31 May 2021 17:05:46 +0100 Subject: [PATCH 22/32] add rspec for friendship and user modfy files --- Gemfile | 2 +- app/views/users/_user.html.erb | 13 ++++--- app/views/users/index.html.erb | 23 ----------- app/views/users/show.html.erb | 49 ++++++++++++++++++----- spec/models/friendship_spec.rb | 20 +++++++++- spec/models/user_spec.rb | 71 ++++++++++++++++++++++++++++++++++ 6 files changed, 139 insertions(+), 39 deletions(-) create mode 100644 spec/models/user_spec.rb diff --git a/Gemfile b/Gemfile index 84ba6a7c32..436b718cac 100644 --- a/Gemfile +++ b/Gemfile @@ -12,8 +12,8 @@ gem 'puma', '~> 3.12' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' gem 'rspec-rails', '~> 5.0', '>= 5.0.1' +gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb index e03c4beb3f..5456cfb1bc 100644 --- a/app/views/users/_user.html.erb +++ b/app/views/users/_user.html.erb @@ -1,6 +1,9 @@
  • - Name: <%= user.name %> - - <%= link_to 'See Profile', user_path(user), class: 'profile-link' %> - -
  • \ No newline at end of file + Name: <%= user.name %> + + + <%= link_to 'See Profile', user_path(user), class: 'profile-link' %> + + <%= friend_or_unfriend_btn(user) %> + + diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb index 7656cf013f..70e973bbc8 100644 --- a/app/views/users/index.html.erb +++ b/app/views/users/index.html.erb @@ -3,26 +3,3 @@ <%= render @users %> - -

    friends

    -<% @friends.uniq.each do |friend| %> -<%= friend.name %>
    -<% end%> - - -

    - -

    recieved requests

    -<% @friend_requests.each do |friend| %> -<%= friend.name %>
    -<%= link_to 'Confirm', confirm_user_path(friend) %> -<%= link_to 'Deny', deny_user_path(friend) %> -<% end%> - - -

    - -

    pending requests

    -<% @pending_requests.each do |friend|%> -<%= friend.name %>
    -<% end%> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index e9919805de..d6dd16ee7d 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,9 +1,40 @@ -
    -

    <%= "Name: #{@user.name}" %>

    -
    -

    Recent posts:

    -
      - <%= render @posts %> -
    -
    -
    +
    +
    +

    <%= "Name: #{@user.name}" %>

    + <%= friend_or_unfriend_btn(@user) %> +
    +

    Recent posts:

    +
      + <%= render @posts %> +
    +
    +
    +
    +
    + <%= pending_header(@user) %> + <% @pending.each do |mess| %> +
      + <% @new = User.find(mess.user_id)%> +
    • <%= pending_name(@user,@new) %><%= accept_btn(@new,@user)%><%=decline_btn(@new,@user)%>
    • +
    + <% end %> +
    +
    + <%= sent_header(@user) %> + <% @sent.each do |mess| %> +
      + <% @new = User.find(mess.friend_id) %> +
    • <%= sent_names(@user, @new) %> <%= sent_button(@user,@new)%>
    • +
    + <%end %> +
    +
    +

    Friends

    + <% @user.friends.each do |friend|%> +
      +
    • <%= friend.name%><%= unfriend_btn(friend)%>
    • +
    + <%end%> +
    +
    +
    diff --git a/spec/models/friendship_spec.rb b/spec/models/friendship_spec.rb index 0ec63d42dd..582887f324 100644 --- a/spec/models/friendship_spec.rb +++ b/spec/models/friendship_spec.rb @@ -1,5 +1,23 @@ require 'rails_helper' RSpec.describe Friendship, type: :model do - pending "add some examples to (or delete) #{__FILE__}" + context ' test friendship model' do + before do + @user = User.create(name: 'henry', email: 'verissimohemry04@gmail.com', password: '123456') + @friend = User.create(name: 'tobi', email: 'tobi@gmail.com', password: '123456') + end + it 'return false if friend_id is not provided' do + @invite = Friendship.create(user_id: @user.id) + expect(@invite).to_not be_valid + end + it 'return false if user_id is not provided' do + @invite = Friendship.create(friend_id: @friend.id) + expect(@invite).to_not be_valid + end + + it 'return true if user_id and friend_id got provided' do + @invite = Friendship.create(user_id: @user.id, friend_id: @friend.id) + expect(@invite).to be_valid + end + end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb new file mode 100644 index 0000000000..0a10ff2a19 --- /dev/null +++ b/spec/models/user_spec.rb @@ -0,0 +1,71 @@ +require 'rails_helper' + +RSpec.describe User, type: :model do + context 'Test for invalid user' do + before do + @user = User.create(name: 'henry', email: 'verissimohemry04@gmail.com') + end + it 'returns false if not all params are filled in.' do + expect(@user).to_not be_valid + end + + it "Can't read a user that has not been created." do + expect(User.find_by(name: 'henry')).to_not eq(@user) + end + end + + context 'Test for valid User' do + before do + @user = User.create(name: 'henry', email: 'verissimohemry04@gmail.com', password: '123456') + end + it 'returns true for creating user' do + expect(@user).to be_valid + end + + it 'Read a user that has been created.' do + expect(User.find_by(name: 'henry')).to eq(@user) + end + end + context 'Test for friends' do + before do + @user = User.create(name: 'henry', email: 'verissimohemry04@gmail.com', password: '123456') + @friend = User.create(name: 'tobi', email: 'tobi@gmail.com', password: '123456') + @invite = Friendship.create(user_id: @user.id, friend_id: @friend.id) + end + + it 'return false if friend is not in friend list' do + expect(@user.friend?(@friend)).to eq(false) + end + + it 'Return one if friend did not accept request' do + expect(@user.pending_friends.count).to eq(1) + end + + it 'Return one if user did not accept request' do + expect(@friend.friend_requests.count).to eq(1) + end + + it 'Return zero if user accepted request' do + @friend.confirm_friend(@user) + expect(@friend.friend_requests.count).to eq(0) + end + end + context 'Test for friends' do + before do + @user = User.create(name: 'henry', email: 'verissimohemry04@gmail.com', password: '123456') + @friend = User.create(name: 'tobi', email: 'tobi@gmail.com', password: '123456') + @invite = Friendship.create(user_id: @user.id, friend_id: @friend.id, confirmed: true) + end + it 'return true if friend is in friend list' do + expect(@user.friend?(@friend)).to eq(true) + end + + it 'Return zero if friend accepted request' do + expect(@user.pending_friends.count).to eq(0) + end + + it 'Return zero if user accepted request' do + expect(@friend.friend_requests.count).to eq(0) + end + end +end From d391a17393066fab9a89bdf055865ba1331f4027 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 15:23:11 +0100 Subject: [PATCH 23/32] add style files --- app/assets/stylesheets/custom.css | 409 +++++++++++++++++++++ app/assets/stylesheets/custom.css.map | 9 + app/assets/stylesheets/custom.scss | 17 +- app/assets/stylesheets/friendships.css | 1 + app/assets/stylesheets/friendships.css.map | 9 + app/assets/stylesheets/friendships.scss | 3 + 6 files changed, 447 insertions(+), 1 deletion(-) create mode 100644 app/assets/stylesheets/custom.css create mode 100644 app/assets/stylesheets/custom.css.map create mode 100644 app/assets/stylesheets/friendships.css create mode 100644 app/assets/stylesheets/friendships.css.map create mode 100644 app/assets/stylesheets/friendships.scss diff --git a/app/assets/stylesheets/custom.css b/app/assets/stylesheets/custom.css new file mode 100644 index 0000000000..41dac2bbe6 --- /dev/null +++ b/app/assets/stylesheets/custom.css @@ -0,0 +1,409 @@ +@import url("https://fonts.googleapis.com/css?family=Roboto:400,700,900&display=swap"); + +* { + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: none; +} + +.user-page { + width: 100%; + height: 100%; + display: -ms-grid; + display: grid; + -ms-grid-columns: 3fr 1fr; + grid-template-columns: 3fr 1fr; +} + +.user-page .user-section { + text-align: center; + width: 100%; +} + +.user-page .pending-con { + width: 100%; + text-align: center; + border-left: black solid 2px; + min-height: 80vh; + margin-left: 2rem; +} + +.user-section body { + background: #fff; + position: relative; + font-family: "Roboto", sans-serif; + font-weight: 400; +} + +h1, +h2, +h3 { + font-weight: 700; +} + +ul { + list-style-type: none; +} + +a { + text-decoration: none; + color: #212121; +} + +.nav { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 16px 48px; + background-color: #689f38; + color: #dcedc8; +} + +.nav a { + color: #dcedc8; + text-transform: uppercase; + font-weight: 900; +} + +.nav .active a { + color: #fff; +} + +.nav a:hover { + color: #fff; +} + +.nav .menu { + width: 80%; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.nav .menu .menu-item { + float: left; + margin: 0 15px; +} + +.main { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 16px; +} + +.notice, +.alert { + margin-bottom: 8px; + width: 100%; + height: 30px; + text-align: center; + padding: 5px; + color: dimgrey; + font-size: 14px; +} + +.notice { + background-color: #d4f6c6; +} + +.alert { + background-color: #f6cfc6; +} + +.errors { + font-size: 10px; + color: red; +} + +.new_post, +.new_comment { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} + +.new_post label, +.new_comment label { + display: none; +} + +.new_post .form-control, +.new_comment .form-control { + width: 100%; + border: 1px solid #bdbdbd; + height: 64px; + padding: 8px; + margin: 4px 0; + border-radius: 4px; +} + +.new_post .field_with_errors, +.new_comment .field_with_errors { + width: 100%; +} + +.new_post .field_with_errors .form-control, +.new_comment .field_with_errors .form-control { + border: 1px solid #f00; +} + +.new_post .btn-primary, +.new_comment .btn-primary { + width: 100%; +} + +.new_post .btn-secondary, +.new_comment .btn-secondary { + width: 30%; + margin-left: 70%; +} + +form { + width: 80%; + margin: 8px 0; +} + +form .field { + width: 100%; + padding: 8px 0; +} + +form .field label { + margin-bottom: 8px; +} + +form .field input { + width: 100%; + border: 1px solid #bdbdbd; + border-radius: 4px; + padding: 8px; + background-color: #dcedc8; +} + +form .field input[type="checkbox"] { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +form .actions { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin: 8px 0; +} + +form input[type="submit"] { + padding: 8px; + width: 50%; + border: none; + border-radius: 4px; + background-color: #689f38; + color: #dcedc8; + text-transform: uppercase; + font-weight: 900; +} + +form input[type="submit"]:hover { + background-color: #8bc34a; + color: #fff; +} + +form .actions.reset input[type="submit"] { + width: 100%; +} + +.title { + text-align: center; + margin-bottom: 16px; + text-transform: capitalize; +} + +.timeline { + width: 100%; + margin: 16px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.timeline h3 { + margin: 8px 0; +} + +.timeline .posts { + width: 100%; +} + +.timeline .post { + width: 100%; + margin: 16px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.timeline .post-attribution { + float: left; +} + +.timeline .post-attribution .post-author { + margin: 0 0 8px 0; + color: #689f38; + text-transform: capitalize; +} + +.timeline .post-liking { + float: right; +} + +.timeline .post-liking a { + color: #689f38; + font-weight: bold; + font-size: 0.9em; + margin: 0 4px; +} + +.timeline .post-liking .post-date { + font-size: 0.6em; +} + +.timeline .post-content { + font-size: 1.1em; + padding: 4px 0; +} + +.timeline .post-comments-section { + margin: 5px; + width: 90%; + margin-left: 10%; +} + +.timeline .post-comments-section .post-comments { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-bottom: 1px solid #bdbdbd; + border-radius: 3px; + margin-bottom: 2px; + padding: 10px; +} + +.timeline .post-comments-section .post-comments p { + font-size: 0.8em; + width: 90%; +} + +.timeline .post-comments-section .post-comments span { + position: absolute; + right: 3px; + font-size: 0.6em; +} + +.users-section { + width: 100%; + margin: 10px; +} + +.users-section .users-list li { + margin-bottom: 16px; + text-transform: capitalize; + font-size: 1.2em; +} + +.users-section .profile-link { + font-size: 0.8em; + margin: 0 0 8px 0; + color: #689f38; +} + +.user-section { + width: 100%; + margin-left: 16px; +} + +.user-section h2 { + text-transform: capitalize; +} + +.user-section .timeline { + width: 100%; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; +} + +.user-section .timeline h3 { + width: 100%; +} + +#error_explanation h2 { + color: #212121; + font-size: 1em; +} + +#error_explanation ul { + color: #f00; +} + +@media only screen and (min-width: 480px) { + form { + width: 60%; + } + + .new_post, + .timeline, + .users-section, + .user-section { + width: 70%; + } +} + +@media (min-width: 780px) { + form { + width: 40%; + } + + .new_post, + .timeline, + .users-section, + .user-section { + width: 50%; + } +} diff --git a/app/assets/stylesheets/custom.css.map b/app/assets/stylesheets/custom.css.map new file mode 100644 index 0000000000..02ad6b50bb --- /dev/null +++ b/app/assets/stylesheets/custom.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "mappings": "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", + "sources": [ + "custom.scss" + ], + "names": [], + "file": "custom.css" +} diff --git a/app/assets/stylesheets/custom.scss b/app/assets/stylesheets/custom.scss index aa50459d37..c6384d5574 100644 --- a/app/assets/stylesheets/custom.scss +++ b/app/assets/stylesheets/custom.scss @@ -13,7 +13,7 @@ $divider-color: #bdbdbd; outline: none; } -body { +.user-section body { background: #fff; position: relative; font-family: "Roboto", sans-serif; @@ -295,6 +295,7 @@ form { .user-section { width: 100%; margin-left: 16px; + text-align: center; h2 { text-transform: capitalize; @@ -311,6 +312,20 @@ form { } } +.user-page { + width: 100%; + height: 100%; + display: grid; + grid-template-columns: 4fr 1fr; + + .pending-con { + width: 100%; + text-align: center; + border-left: black solid 2px; + min-height: 80vh; + } +} + #error_explanation { h2 { color: $primary-color-text; diff --git a/app/assets/stylesheets/friendships.css b/app/assets/stylesheets/friendships.css new file mode 100644 index 0000000000..0da20a2877 --- /dev/null +++ b/app/assets/stylesheets/friendships.css @@ -0,0 +1 @@ +/* No CSS */ diff --git a/app/assets/stylesheets/friendships.css.map b/app/assets/stylesheets/friendships.css.map new file mode 100644 index 0000000000..6d0583e155 --- /dev/null +++ b/app/assets/stylesheets/friendships.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "mappings": "", + "sources": [ + "friendships.scss" + ], + "names": [], + "file": "friendships.css" +} diff --git a/app/assets/stylesheets/friendships.scss b/app/assets/stylesheets/friendships.scss new file mode 100644 index 0000000000..9bda05bc68 --- /dev/null +++ b/app/assets/stylesheets/friendships.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the Friendships controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ From 60f8efecb2763cdbb225e4c8dffa08f6438dde39 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 15:24:46 +0100 Subject: [PATCH 24/32] modify contriller file --- app/controllers/posts_controller.rb | 30 +++++++++++++++++++++++++++++ app/controllers/users_controller.rb | 2 ++ 2 files changed, 32 insertions(+) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 0062aebe55..8a4f84ed63 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -27,3 +27,33 @@ def post_params params.require(:post).permit(:content) end end + +class PostsController < ApplicationController + before_action :authenticate_user! + + def index + @post = Post.new + timeline_posts + end + + def create + @post = current_user.posts.new(post_params) + + if @post.save + redirect_to posts_path, notice: 'Post was successfully created.' + else + timeline_posts + render :index, alert: 'Post was not created.' + end + end + + private + + def timeline_posts + @timeline_posts = Post.where(user: (current_user.friends.to_a << current_user)).ordered_by_most_recent + end + + def post_params + params.require(:post).permit(:content) + end +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b0350d70e4..83c38e0090 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -8,5 +8,7 @@ def index def show @user = User.find(params[:id]) @posts = @user.posts.ordered_by_most_recent + @sent = Friendship.where(user_id: current_user.id).where(confirmed: nil) + @pending = Friendship.where(friend_id: current_user.id).where(confirmed: nil) end end From 972927a2f4d48c3c00f58c8e2cfc9f6cea2a8528 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 15:26:41 +0100 Subject: [PATCH 25/32] modify helper file --- app/helpers/application_helper.rb | 102 ++++++++++++++++++++++++++++++ app/helpers/friendships_helper.rb | 2 + 2 files changed, 104 insertions(+) create mode 100644 app/helpers/friendships_helper.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ea52901dfe..2da2d23c83 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,4 +1,36 @@ module ApplicationHelper + def sign_out_btn + link_to 'Sign out', destroy_user_session_path, method: :delete if current_user + end + + def sign_in_btn + link_to 'Sign in', user_session_path unless current_user + end + + def notice_con1 + return unless notice.present? + + "
    ".html_safe + end + + def notice_con + notice if notice.present? + end + + def alert_con + alert if alert.present? + end + + def alert_con1 + return unless alert.present? + + "
    ".html_safe + end + + def closing_div + '
    '.html_safe + end + def menu_link_to(link_text, link_path) class_name = current_page?(link_path) ? 'menu-item active' : 'menu-item' @@ -15,4 +47,74 @@ def like_or_dislike_btn(post) link_to('Like!', post_likes_path(post_id: post.id), method: :post) end end + + def friend_or_unfriend_btn(user) + @check = Friendship.where(user_id: user.id).where(friend_id: current_user.id).first + return unless user.id != current_user.id && !@friends && !@check && !user.friends.include?(current_user) + + friend = Friendship.where(user_id: current_user.id).where(friend_id: user.id).where(confirmed: nil).first + if friend + link_to('Cancel request', friendship_path(friend), class: 'btn btn-outline-danger btn-sm ml-3', method: :delete) + + else + link_to('Add friend', friendships_path(user), class: 'btn btn-outline-success btn-sm ml-3', method: :post) + end + end + + def unfriend_btn(user) + friend = Friendship.where(user_id: [current_user.id, + user.id]).where(friend_id: [current_user.id, + user.id]).where(confirmed: true).first + link_to('Unfriend', friendship_path(friend), class: 'btn btn-outline-danger btn-sm ml-3', method: :delete) + end + + def decline_btn(user, current) + return unless current_user.id == current.id + + friend = Friendship.where(user_id: user.id).where(friend_id: current_user.id).first + link_to('Cancel', friendship_path(friend), class: 'btn btn-outline-danger btn-sm ml-3', method: :delete) + end + + def accept_btn(user, current) + return unless current_user.id == current.id + + friend = Friendship.where(user_id: user.id).where(friend_id: current_user.id).first + link_to('Accept', friendship_path(friend), class: 'btn btn-outline-success btn-sm ml-3', method: :patch) + end + + def pending_header(user) + return unless current_user.id == user.id && @pending.any? + + '

    Pending request

    '.html_safe + end + + def pending_name(user, name) + return unless user.id == current_user.id + + name.name + end + + def sent_header(user) + return unless current_user.id == user.id && @sent.any? + + '

    Sent request

    '.html_safe + end + + def sent_names(user, name) + return unless current_user.id == user.id && @sent.any? + + name.name + end + + def sent_button(user, new1) + return unless current_user.id == user.id + + friend_or_unfriend_btn(new1) + end + + def user_page_btn + return unless current_user + + (menu_link_to "#{current_user.name}'s page", user_path(current_user)).html_safe + end end diff --git a/app/helpers/friendships_helper.rb b/app/helpers/friendships_helper.rb new file mode 100644 index 0000000000..64f89ba620 --- /dev/null +++ b/app/helpers/friendships_helper.rb @@ -0,0 +1,2 @@ +module FriendshipsHelper +end From 6aca35f5c080f6db1c04982d3f17ecb7d802f99b Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 15:37:00 +0100 Subject: [PATCH 26/32] modify view folder --- app/views/layouts/application.html.erb | 58 ++++++++++--------- app/views/users/show.html.erb | 79 ++++++++++++++------------ 2 files changed, 72 insertions(+), 65 deletions(-) diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index e5fdd63777..26f45fed02 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,41 +1,43 @@ - + + RorSocialScaffold <%= csrf_meta_tags %> <%= csp_meta_tag %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> - - + + + - <% if notice.present? %> -
    -

    <%= notice %>

    -
    - <% end %> - <% if alert.present? %> -
    -

    <%= alert %>

    -
    - <% end %> + + <%= notice_con1 %> +

    <%= notice_con %>

    + <%= closing_div%> + <%= alert_con1 %> +

    <%= alert_con %>

    + <%= closing_div%>
    - <%= yield %> + <%= yield %>
    - + + diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index d6dd16ee7d..be81ecb2ab 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,40 +1,45 @@
    -
    -

    <%= "Name: #{@user.name}" %>

    - <%= friend_or_unfriend_btn(@user) %> -
    -

    Recent posts:

    -
      - <%= render @posts %> -
    -
    -
    -
    -
    - <%= pending_header(@user) %> - <% @pending.each do |mess| %> -
      - <% @new = User.find(mess.user_id)%> -
    • <%= pending_name(@user,@new) %><%= accept_btn(@new,@user)%><%=decline_btn(@new,@user)%>
    • -
    - <% end %> +
    +

    <%= "Name: #{@user.name}" %>

    + <%= friend_or_unfriend_btn(@user) %> +
    +

    Recent posts:

    +
      + <%= render @posts %> +
    +
    +
    +
    + +
    + + <%= pending_header(@user) %> + + <% @pending.each do |mess| %> +
      + <% @new = User.find(mess.user_id)%> +
    • <%= pending_name(@user,@new) %><%= accept_btn(@new,@user)%><%=decline_btn(@new,@user)%>
    • +
    + <% end %> +
    +
    + <%= sent_header(@user) %> + <% @sent.each do |mess| %> +
      + <% @new = User.find(mess.friend_id) %> +
    • <%= sent_names(@user, @new) %> <%= sent_button(@user,@new)%>
    • + +
    + <%end %> +
    + +
    +

    Friends

    + <% @user.friends.each do |friend|%> +
      +
    • <%= friend.name%><%= unfriend_btn(friend)%>
    • +
    + <%end%> +
    -
    - <%= sent_header(@user) %> - <% @sent.each do |mess| %> -
      - <% @new = User.find(mess.friend_id) %> -
    • <%= sent_names(@user, @new) %> <%= sent_button(@user,@new)%>
    • -
    - <%end %> -
    -
    -

    Friends

    - <% @user.friends.each do |friend|%> -
      -
    • <%= friend.name%><%= unfriend_btn(friend)%>
    • -
    - <%end%> -
    -
    From d2a53b692f01b7f663d260e5d2d30c7e6b71165c Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 15:40:23 +0100 Subject: [PATCH 27/32] modify routes file --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index b868c32dce..ba4f127f1d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,4 +14,4 @@ end # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html -end \ No newline at end of file +end From 2f65463f0f80aad2746249e3d93e1b5eb8415791 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 16:22:59 +0100 Subject: [PATCH 28/32] modify controller folder --- app/controllers/posts_controller.rb | 32 +---------------------------- app/models/user.rb | 2 +- 2 files changed, 2 insertions(+), 32 deletions(-) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 8a4f84ed63..07d8631835 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -20,37 +20,7 @@ def create private def timeline_posts - @timeline_posts ||= Post.all.ordered_by_most_recent.includes(:user) - end - - def post_params - params.require(:post).permit(:content) - end -end - -class PostsController < ApplicationController - before_action :authenticate_user! - - def index - @post = Post.new - timeline_posts - end - - def create - @post = current_user.posts.new(post_params) - - if @post.save - redirect_to posts_path, notice: 'Post was successfully created.' - else - timeline_posts - render :index, alert: 'Post was not created.' - end - end - - private - - def timeline_posts - @timeline_posts = Post.where(user: (current_user.friends.to_a << current_user)).ordered_by_most_recent + @timeline_posts = Post.where(user: (current_user.friendss.to_a << current_user)).ordered_by_most_recent end def post_params diff --git a/app/models/user.rb b/app/models/user.rb index 423bc71830..0c3034aa6b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -18,7 +18,7 @@ class User < ApplicationRecord has_many :inverted_friendships, -> { where confirmed: false }, class_name: 'Friendship', foreign_key: 'friend_id' has_many :friend_requests, through: :inverted_friendships - def friends + def friendss friends_array = friendships.map { |friendship| friendship.friend if friendship.confirmed } friends_array += inverse_friendships.map { |friendship| friendship.user if friendship.confirmed } friends_array.compact From 0a5352e29ebc4d0e57c43d44d1f6b0cdf750f629 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 16:25:34 +0100 Subject: [PATCH 29/32] fix linter errors --- app/assets/stylesheets/custom.css | 428 +++++++++++++++--------------- 1 file changed, 214 insertions(+), 214 deletions(-) diff --git a/app/assets/stylesheets/custom.css b/app/assets/stylesheets/custom.css index 41dac2bbe6..012277c67d 100644 --- a/app/assets/stylesheets/custom.css +++ b/app/assets/stylesheets/custom.css @@ -1,409 +1,409 @@ @import url("https://fonts.googleapis.com/css?family=Roboto:400,700,900&display=swap"); * { - margin: 0; - padding: 0; - -webkit-box-sizing: border-box; - box-sizing: border-box; - outline: none; + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: none; } .user-page { - width: 100%; - height: 100%; - display: -ms-grid; - display: grid; - -ms-grid-columns: 3fr 1fr; - grid-template-columns: 3fr 1fr; + width: 100%; + height: 100%; + display: -ms-grid; + display: grid; + -ms-grid-columns: 3fr 1fr; + grid-template-columns: 3fr 1fr; } .user-page .user-section { - text-align: center; - width: 100%; + text-align: center; + width: 100%; } .user-page .pending-con { - width: 100%; - text-align: center; - border-left: black solid 2px; - min-height: 80vh; - margin-left: 2rem; + width: 100%; + text-align: center; + border-left: black solid 2px; + min-height: 80vh; + margin-left: 2rem; } .user-section body { - background: #fff; - position: relative; - font-family: "Roboto", sans-serif; - font-weight: 400; + background: #fff; + position: relative; + font-family: "Roboto", sans-serif; + font-weight: 400; } h1, h2, h3 { - font-weight: 700; + font-weight: 700; } ul { - list-style-type: none; + list-style-type: none; } a { - text-decoration: none; - color: #212121; + text-decoration: none; + color: #212121; } .nav { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - padding: 16px 48px; - background-color: #689f38; - color: #dcedc8; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 16px 48px; + background-color: #689f38; + color: #dcedc8; } .nav a { - color: #dcedc8; - text-transform: uppercase; - font-weight: 900; + color: #dcedc8; + text-transform: uppercase; + font-weight: 900; } .nav .active a { - color: #fff; + color: #fff; } .nav a:hover { - color: #fff; + color: #fff; } .nav .menu { - width: 80%; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; + width: 80%; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } .nav .menu .menu-item { - float: left; - margin: 0 15px; + float: left; + margin: 0 15px; } .main { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 16px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 16px; } .notice, .alert { - margin-bottom: 8px; - width: 100%; - height: 30px; - text-align: center; - padding: 5px; - color: dimgrey; - font-size: 14px; + margin-bottom: 8px; + width: 100%; + height: 30px; + text-align: center; + padding: 5px; + color: dimgrey; + font-size: 14px; } .notice { - background-color: #d4f6c6; + background-color: #d4f6c6; } .alert { - background-color: #f6cfc6; + background-color: #f6cfc6; } .errors { - font-size: 10px; - color: red; + font-size: 10px; + color: red; } .new_post, .new_comment { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; } .new_post label, .new_comment label { - display: none; + display: none; } .new_post .form-control, .new_comment .form-control { - width: 100%; - border: 1px solid #bdbdbd; - height: 64px; - padding: 8px; - margin: 4px 0; - border-radius: 4px; + width: 100%; + border: 1px solid #bdbdbd; + height: 64px; + padding: 8px; + margin: 4px 0; + border-radius: 4px; } .new_post .field_with_errors, .new_comment .field_with_errors { - width: 100%; + width: 100%; } .new_post .field_with_errors .form-control, .new_comment .field_with_errors .form-control { - border: 1px solid #f00; + border: 1px solid #f00; } .new_post .btn-primary, .new_comment .btn-primary { - width: 100%; + width: 100%; } .new_post .btn-secondary, .new_comment .btn-secondary { - width: 30%; - margin-left: 70%; + width: 30%; + margin-left: 70%; } form { - width: 80%; - margin: 8px 0; + width: 80%; + margin: 8px 0; } form .field { - width: 100%; - padding: 8px 0; + width: 100%; + padding: 8px 0; } form .field label { - margin-bottom: 8px; + margin-bottom: 8px; } form .field input { - width: 100%; - border: 1px solid #bdbdbd; - border-radius: 4px; - padding: 8px; - background-color: #dcedc8; + width: 100%; + border: 1px solid #bdbdbd; + border-radius: 4px; + padding: 8px; + background-color: #dcedc8; } form .field input[type="checkbox"] { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; } form .actions { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin: 8px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin: 8px 0; } form input[type="submit"] { - padding: 8px; - width: 50%; - border: none; - border-radius: 4px; - background-color: #689f38; - color: #dcedc8; - text-transform: uppercase; - font-weight: 900; + padding: 8px; + width: 50%; + border: none; + border-radius: 4px; + background-color: #689f38; + color: #dcedc8; + text-transform: uppercase; + font-weight: 900; } form input[type="submit"]:hover { - background-color: #8bc34a; - color: #fff; + background-color: #8bc34a; + color: #fff; } form .actions.reset input[type="submit"] { - width: 100%; + width: 100%; } .title { - text-align: center; - margin-bottom: 16px; - text-transform: capitalize; + text-align: center; + margin-bottom: 16px; + text-transform: capitalize; } .timeline { - width: 100%; - margin: 16px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; + width: 100%; + margin: 16px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } .timeline h3 { - margin: 8px 0; + margin: 8px 0; } .timeline .posts { - width: 100%; + width: 100%; } .timeline .post { - width: 100%; - margin: 16px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; + width: 100%; + margin: 16px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } .timeline .post-attribution { - float: left; + float: left; } .timeline .post-attribution .post-author { - margin: 0 0 8px 0; - color: #689f38; - text-transform: capitalize; + margin: 0 0 8px 0; + color: #689f38; + text-transform: capitalize; } .timeline .post-liking { - float: right; + float: right; } .timeline .post-liking a { - color: #689f38; - font-weight: bold; - font-size: 0.9em; - margin: 0 4px; + color: #689f38; + font-weight: bold; + font-size: 0.9em; + margin: 0 4px; } .timeline .post-liking .post-date { - font-size: 0.6em; + font-size: 0.6em; } .timeline .post-content { - font-size: 1.1em; - padding: 4px 0; + font-size: 1.1em; + padding: 4px 0; } .timeline .post-comments-section { - margin: 5px; - width: 90%; - margin-left: 10%; + margin: 5px; + width: 90%; + margin-left: 10%; } .timeline .post-comments-section .post-comments { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - border-bottom: 1px solid #bdbdbd; - border-radius: 3px; - margin-bottom: 2px; - padding: 10px; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-bottom: 1px solid #bdbdbd; + border-radius: 3px; + margin-bottom: 2px; + padding: 10px; } .timeline .post-comments-section .post-comments p { - font-size: 0.8em; - width: 90%; + font-size: 0.8em; + width: 90%; } .timeline .post-comments-section .post-comments span { - position: absolute; - right: 3px; - font-size: 0.6em; + position: absolute; + right: 3px; + font-size: 0.6em; } .users-section { - width: 100%; - margin: 10px; + width: 100%; + margin: 10px; } .users-section .users-list li { - margin-bottom: 16px; - text-transform: capitalize; - font-size: 1.2em; + margin-bottom: 16px; + text-transform: capitalize; + font-size: 1.2em; } .users-section .profile-link { - font-size: 0.8em; - margin: 0 0 8px 0; - color: #689f38; + font-size: 0.8em; + margin: 0 0 8px 0; + color: #689f38; } .user-section { - width: 100%; - margin-left: 16px; + width: 100%; + margin-left: 16px; } .user-section h2 { - text-transform: capitalize; + text-transform: capitalize; } .user-section .timeline { - width: 100%; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: start; + width: 100%; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; } .user-section .timeline h3 { - width: 100%; + width: 100%; } #error_explanation h2 { - color: #212121; - font-size: 1em; + color: #212121; + font-size: 1em; } #error_explanation ul { - color: #f00; + color: #f00; } @media only screen and (min-width: 480px) { - form { - width: 60%; - } + form { + width: 60%; + } - .new_post, - .timeline, - .users-section, - .user-section { - width: 70%; - } + .new_post, + .timeline, + .users-section, + .user-section { + width: 70%; + } } @media (min-width: 780px) { - form { - width: 40%; - } - - .new_post, - .timeline, - .users-section, - .user-section { - width: 50%; - } + form { + width: 40%; + } + + .new_post, + .timeline, + .users-section, + .user-section { + width: 50%; + } } From 4ecc05f3ddc37a7b6d2bf6b494ab8e4464c1ed09 Mon Sep 17 00:00:00 2001 From: verissimohenry Date: Tue, 1 Jun 2021 16:30:52 +0100 Subject: [PATCH 30/32] fix linter error --- app/assets/stylesheets/custom.css | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/app/assets/stylesheets/custom.css b/app/assets/stylesheets/custom.css index 012277c67d..0080efe767 100644 --- a/app/assets/stylesheets/custom.css +++ b/app/assets/stylesheets/custom.css @@ -54,7 +54,6 @@ a { .nav { display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; @@ -92,7 +91,6 @@ a { .main { display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -131,7 +129,6 @@ a { .new_post, .new_comment { display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -209,7 +206,6 @@ form .field input[type="checkbox"] { form .actions { display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; @@ -247,7 +243,6 @@ form .actions.reset input[type="submit"] { width: 100%; margin: 16px 0; display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -270,7 +265,6 @@ form .actions.reset input[type="submit"] { width: 100%; margin: 16px 0; display: -webkit-box; - display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -317,7 +311,6 @@ form .actions.reset input[type="submit"] { .timeline .post-comments-section .post-comments { position: relative; display: -webkit-box; - display: -ms-flexbox; display: flex; border-bottom: 1px solid #bdbdbd; border-radius: 3px; @@ -339,6 +332,7 @@ form .actions.reset input[type="submit"] { .users-section { width: 100%; margin: 10px; + margin-left: 16px; } .users-section .users-list li { @@ -353,11 +347,6 @@ form .actions.reset input[type="submit"] { color: #689f38; } -.user-section { - width: 100%; - margin-left: 16px; -} - .user-section h2 { text-transform: capitalize; } From d81baba5b533adcb3de3e4a1aa95e0fc6c8b1084 Mon Sep 17 00:00:00 2001 From: HENRY VERISSIMO Date: Fri, 11 Aug 2023 10:03:05 +0100 Subject: [PATCH 31/32] modify app --- Gemfile | 2 +- Gemfile.lock | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 436b718cac..fd3ff09123 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ ruby '2.7.2' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.4' # Use postgresql as the database for Active Record -gem 'pg', '>= 0.18', '< 2.0' +gem 'pg', '~> 1.5', '>= 1.5.3' # Use Puma as the app server gem 'puma', '~> 3.12' # Use SCSS for stylesheets diff --git a/Gemfile.lock b/Gemfile.lock index 7a56644bd2..5eb3f1c14b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -101,8 +101,7 @@ GEM parallel (1.20.1) parser (3.0.1.1) ast (~> 2.4.1) - pg (1.2.3) - pg (1.2.3-x64-mingw32) + pg (1.5.3) puma (3.12.6) racc (1.5.2) rack (2.2.3) @@ -231,7 +230,7 @@ DEPENDENCIES devise jbuilder (~> 2.5) listen (>= 3.0.5, < 3.2) - pg (>= 0.18, < 2.0) + pg (~> 1.5, >= 1.5.3) puma (~> 3.12) rails (~> 5.2.4) rspec @@ -249,4 +248,4 @@ RUBY VERSION ruby 2.7.2p137 BUNDLED WITH - 2.2.16 + 2.4.6 From a760627c5cd5b7705f014d96265b157124652425 Mon Sep 17 00:00:00 2001 From: HENRY VERISSIMO Date: Fri, 11 Aug 2023 11:53:44 +0100 Subject: [PATCH 32/32] modify app --- .ruby-version | 2 +- Gemfile | 7 +++---- Gemfile.lock | 17 ++++++----------- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/.ruby-version b/.ruby-version index 37c2961c24..e4604e3afd 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.2 +3.2.1 diff --git a/Gemfile b/Gemfile index fd3ff09123..cdd33d0c82 100644 --- a/Gemfile +++ b/Gemfile @@ -1,10 +1,10 @@ source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } -ruby '2.7.2' +ruby '3.2.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '~> 5.2.4' +gem 'rails', '~> 5.2.5' # Use postgresql as the database for Active Record gem 'pg', '~> 1.5', '>= 1.5.3' # Use Puma as the app server @@ -12,7 +12,6 @@ gem 'puma', '~> 3.12' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets -gem 'rspec-rails', '~> 5.0', '>= 5.0.1' gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby @@ -46,7 +45,7 @@ group :development, :test do end group :test do - gem 'rspec' + gem 'rspec-rails' end group :development do diff --git a/Gemfile.lock b/Gemfile.lock index 5eb3f1c14b..467fd7a7b8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,10 +76,9 @@ GEM concurrent-ruby (~> 1.0) jbuilder (2.11.2) activesupport (>= 5.0.0) - listen (3.1.5) + listen (3.0.8) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - ruby_dep (~> 1.2) loofah (2.9.1) crass (~> 1.0.2) nokogiri (>= 1.5.9) @@ -141,10 +140,6 @@ GEM actionpack (>= 5.0) railties (>= 5.0) rexml (3.2.5) - rspec (3.10.0) - rspec-core (~> 3.10.0) - rspec-expectations (~> 3.10.0) - rspec-mocks (~> 3.10.0) rspec-core (3.10.1) rspec-support (~> 3.10.0) rspec-expectations (3.10.1) @@ -174,7 +169,6 @@ GEM rubocop-ast (1.6.0) parser (>= 3.0.1.1) ruby-progressbar (1.11.0) - ruby_dep (1.5.0) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) @@ -205,6 +199,8 @@ GEM turbolinks-source (5.2.0) tzinfo (1.2.9) thread_safe (~> 0.1) + tzinfo-data (1.2023.3) + tzinfo (>= 1.0.0) uglifier (4.2.0) execjs (>= 0.3.0, < 3) unicode-display_width (2.0.0) @@ -232,9 +228,8 @@ DEPENDENCIES listen (>= 3.0.5, < 3.2) pg (~> 1.5, >= 1.5.3) puma (~> 3.12) - rails (~> 5.2.4) - rspec - rspec-rails (~> 5.0, >= 5.0.1) + rails (~> 5.2.5) + rspec-rails rubocop sass-rails (~> 5.0) spring @@ -245,7 +240,7 @@ DEPENDENCIES web-console (>= 3.3.0) RUBY VERSION - ruby 2.7.2p137 + ruby 3.2.1p31 BUNDLED WITH 2.4.6