From fd65112bb45bc77a477ce242686557a4ae9bef50 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 14:34:44 -0300 Subject: [PATCH 01/16] Refactor environment variables to use correct local development URL --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 96f78c0..5598497 100644 --- a/.env +++ b/.env @@ -15,4 +15,4 @@ HOODPAY_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjIzMjI1IiwiZXhwIjo HOODPAY_BUSINESS_ID=21578 NEXT_PUBLIC_APP_URL=https://alpened.io -NEXT_PUBLIC_SHOUTBOX_SOCKET=http://localhost:4000 \ No newline at end of file +NEXT_PUBLIC_SHOUTBOX_SOCKET=https://alpened.io \ No newline at end of file From 3fc1e5dab59aa483241eb4456e07ea64623f9c7a Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 15:37:47 -0300 Subject: [PATCH 02/16] Refactor environment variables and URLs --- .env | 4 ++-- .env.development | 4 ++-- components/Shoutbox.tsx | 5 ++++- infra/compose.yaml | 5 +++++ socket-server/server.js | 3 ++- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.env b/.env index 5598497..36a0c1d 100644 --- a/.env +++ b/.env @@ -13,6 +13,6 @@ SOCKET_PORT=4000 HOODPAY_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjIzMjI1IiwiZXhwIjoyMDQzNTQwODY2fQ.ZSzD7Vj2tgOfseg_6PcDhF_PkmGag6slEXUFwz4llpE HOODPAY_BUSINESS_ID=21578 -NEXT_PUBLIC_APP_URL=https://alpened.io -NEXT_PUBLIC_SHOUTBOX_SOCKET=https://alpened.io \ No newline at end of file +NEXT_PUBLIC_SHOUTBOX_SOCKET=https://alpened.io +NEXT_PUBLIC_APP_URL=https://alpened.io \ No newline at end of file diff --git a/.env.development b/.env.development index 7a92ad5..d96009a 100644 --- a/.env.development +++ b/.env.development @@ -13,6 +13,6 @@ SOCKET_PORT=4000 HOODPAY_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjIzMDM4IiwiZXhwIjoyMDQyOTgxMzU4fQ.ElWanjvJZ_NLr5gvk0XwKGBLMGnU32NG_J-qjtbJhfA HOODPAY_BUSINESS_ID=21424 -NEXT_PUBLIC_APP_URL=http://localhost:3000 -NEXT_PUBLIC_SHOUTBOX_SOCKET=http://localhost:4000 \ No newline at end of file +NEXT_PUBLIC_SHOUTBOX_SOCKET=https://alpened.io +NEXT_PUBLIC_APP_URL=https://alpened.io \ No newline at end of file diff --git a/components/Shoutbox.tsx b/components/Shoutbox.tsx index ee2e8c4..4aeaf84 100644 --- a/components/Shoutbox.tsx +++ b/components/Shoutbox.tsx @@ -38,7 +38,10 @@ const Shoutbox = () => { useEffect(() => { const newSocket = io( process.env.NEXT_PUBLIC_SHOUTBOX_SOCKET || "http://localhost:4000", - { withCredentials: true }, + { + withCredentials: true, + path: "/socket.io", + }, ); setSocket(newSocket); diff --git a/infra/compose.yaml b/infra/compose.yaml index d599315..eeeaadb 100644 --- a/infra/compose.yaml +++ b/infra/compose.yaml @@ -6,9 +6,14 @@ services: - ../.env.development ports: - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data socket-server: container_name: "socket-server" build: ../socket-server ports: - "4000:4000" + +volumes: + postgres_data: diff --git a/socket-server/server.js b/socket-server/server.js index 79c15db..18a6f49 100644 --- a/socket-server/server.js +++ b/socket-server/server.js @@ -7,8 +7,9 @@ const app = express(); const server = http.createServer(app); const io = new Server(server, { + path: "/socket.io", cors: { - origin: process.env.NEXT_PUBLIC_APP_URL, + origin: "https://alpened.io", methods: ["GET", "POST"], credentials: true, }, From cfe5b25a03f14434928af8a76349185c97443be7 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 15:45:32 -0300 Subject: [PATCH 03/16] Testing bare git --- .env.development | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.development b/.env.development index d96009a..b505e8e 100644 --- a/.env.development +++ b/.env.development @@ -6,7 +6,7 @@ POSTGRES_PASSWORD=local_password DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db -NEXTAUTH_URL=http://localhost:3000 +NEXTAUTH_URL=http://localhost:3001 NEXTAUTH_SECRET=v5+DnKYpcVpu6/sjEP2AVub1Stoql2qz/RAiwp5udLk SOCKET_PORT=4000 From 73a9566b1cb9502a180b1b5a22ddf0ec5c578852 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 15:49:16 -0300 Subject: [PATCH 04/16] Refactor NEXTAUTH_URL in .env.development to use correct local development URL --- .env.development | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.development b/.env.development index b505e8e..d96009a 100644 --- a/.env.development +++ b/.env.development @@ -6,7 +6,7 @@ POSTGRES_PASSWORD=local_password DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db -NEXTAUTH_URL=http://localhost:3001 +NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=v5+DnKYpcVpu6/sjEP2AVub1Stoql2qz/RAiwp5udLk SOCKET_PORT=4000 From d050f167bd367bb6359a46c9b40f1566c1642b57 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 16:54:10 -0300 Subject: [PATCH 05/16] Refactor .env file to use correct local development URL and include Postgres CA certificate --- .env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.env b/.env index 36a0c1d..7cc9a2e 100644 --- a/.env +++ b/.env @@ -1,8 +1,8 @@ -POSTGRES_HOST=localhost -POSTGRES_PORT=5432 +POSTGRES_HOST=localhost\nPOSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password +POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db From caade34666a4eb5bc93308a9046524b8a132e660 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 16:57:22 -0300 Subject: [PATCH 06/16] Refactor .env file to separate POSTGRES_HOST and POSTGRES_PORT variables --- .env | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.env b/.env index 7cc9a2e..ae95bca 100644 --- a/.env +++ b/.env @@ -1,4 +1,5 @@ -POSTGRES_HOST=localhost\nPOSTGRES_PORT=5432 +POSTGRES_HOST=localhost +POSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password From cf048d2f5c62c6e3e9b487086f1192e2576638a9 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 17:06:12 -0300 Subject: [PATCH 07/16] Refactor .env file to separate POSTGRES_HOST and POSTGRES_PORT variables and include Postgres CA certificate --- .env | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.env b/.env index ae95bca..f8feb3b 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ POSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password -POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" +POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----" DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db @@ -16,4 +16,5 @@ HOODPAY_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjIzMjI1IiwiZXhwIjo HOODPAY_BUSINESS_ID=21578 NEXT_PUBLIC_SHOUTBOX_SOCKET=https://alpened.io -NEXT_PUBLIC_APP_URL=https://alpened.io \ No newline at end of file +NEXT_PUBLIC_APP_URL=https://alpened.io + From a73554dd94389f69ef7e0a11b4cf2f83cb8ce34f Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 17:10:11 -0300 Subject: [PATCH 08/16] Refactor .env file to separate POSTGRES_HOST and POSTGRES_PORT variables and include Postgres CA certificate --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index f8feb3b..8a4d4b5 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ POSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password -POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----" +POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db From 8498eb8402f6768ae133c7bc12641b385c46eaef Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 17:11:34 -0300 Subject: [PATCH 09/16] Refactor getSSLValues function to include rejectUnauthorized option --- infra/database.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/infra/database.ts b/infra/database.ts index 389bcff..995a6dc 100644 --- a/infra/database.ts +++ b/infra/database.ts @@ -51,6 +51,7 @@ function getSSLValues() { console.log("SSL values found"); return { ca: process.env.POSTGRES_CA, + rejectUnauthorized: false, }; } console.log("No SSL values found"); From a31ce2ff777ff6b7f7b76bc66505bd3ed69a4bc5 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 21:09:39 -0300 Subject: [PATCH 10/16] Refactor getSSLValues function to include rejectUnauthorized option --- .env | 2 +- components/ErrorBoundary.tsx | 35 ++ components/UserProfile.tsx | 667 ++++++++++++++++++----------------- infra/database.ts | 3 - next.config.mjs | 59 +++- 5 files changed, 432 insertions(+), 334 deletions(-) create mode 100644 components/ErrorBoundary.tsx diff --git a/.env b/.env index 8a4d4b5..32953a6 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ POSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password -POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" +POSTGRES_CGA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db diff --git a/components/ErrorBoundary.tsx b/components/ErrorBoundary.tsx new file mode 100644 index 0000000..4d1a006 --- /dev/null +++ b/components/ErrorBoundary.tsx @@ -0,0 +1,35 @@ +// components/ErrorBoundary.tsx +import React, { Component, ErrorInfo, ReactNode } from "react"; + +interface Props { + children: ReactNode; +} + +interface State { + hasError: boolean; +} + +class ErrorBoundary extends Component { + public state: State = { + hasError: false, + }; + + // eslint-disable-next-line no-unused-vars + public static getDerivedStateFromError(_: Error): State { + return { hasError: true }; + } + + public componentDidCatch(error: Error, errorInfo: ErrorInfo) { + console.error("Uncaught error:", error, errorInfo); + } + + public render() { + if (this.state.hasError) { + return

Sorry.. there was an error

; + } + + return this.props.children; + } +} + +export default ErrorBoundary; diff --git a/components/UserProfile.tsx b/components/UserProfile.tsx index c66c756..53aad95 100644 --- a/components/UserProfile.tsx +++ b/components/UserProfile.tsx @@ -5,6 +5,9 @@ import Link from "next/link"; import { motion, AnimatePresence } from "framer-motion"; import customEmojis from "@/models/custom-emojis"; import Image from "next/image"; +import dynamic from "next/dynamic"; + +const ErrorBoundary = dynamic(() => import("@/components/ErrorBoundary")); const apiUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"; @@ -120,7 +123,7 @@ export default function UserProfile({ }; fetchData(); - }); + }, [user.username]); const renderContentWithEmojisAndBBCode = (content: string) => { if (!content) { @@ -239,352 +242,358 @@ export default function UserProfile({ }; return ( -
-
-
-
- - {user.username} - - -

+
+
+
+
+ - {user.username} -

-

- {user.banned ? "Banned" : user.user_group} -

-
+ {user.username} { + e.target.onerror = null; + e.target.src = "/winter_soldier.gif"; + }} + /> + + +

+ {user.username} +

+

+ {user.banned ? "Banned" : user.user_group} +

+
+
-
- -
-
- {/* Left Column */} -
- {/* Reputation and Likes */} - -
-
-

= 0 ? "text-green-500" : "text-red-500"}`} - > - {userReputations} -

-

Reputation

- - - + {userReputations} +

+

Reputation

+ + + +
+
+

+ {userLikes} +

+

Likes

+
-
-

- {userLikes} -

-

Likes

+ + + {/* Information */} + +

+ Information +

+
+ {[ + { label: "UID", value: user.id }, + { label: "Status", value: user.status || "Offline" }, + { + label: "Registration Date", + value: timeSinceLastActivity(user.created_at), + }, + { label: "Last Visit", value: user.last_visit }, + ].map((item) => ( +
+ {item.label}: + {item.value} +
+ ))}
-
-
- - {/* Information */} - -

- Information -

-
- {[ - { label: "UID", value: user.id }, - { label: "Status", value: user.status || "Offline" }, - { - label: "Registration Date", - value: timeSinceLastActivity(user.created_at), - }, - { label: "Last Visit", value: user.last_visit }, - ].map((item) => ( -
- {item.label}: - {item.value} -
- ))} -
-
+ - {/* Blank space for future usergroup banners */} -
-
+ {/* Blank space for future usergroup banners */} +
+
- {/* Center Column */} -
- {/* Stats */} - -

- Stats -

-
- {[ - { - label: "Threads", - value: userThreads, - link: `/users/${user.username}/threads`, - }, - { label: "Posts", value: user.posts_count }, - { label: "Vouches", value: user.vouches }, - { label: "Credits", value: user.credits || 0 }, - ].map((stat) => ( -
- {stat.link ? ( - -

{stat.value}

-

{stat.label}

- - ) : ( - <> -

{stat.value}

-

{stat.label}

- - )} + {/* Center Column */} +
+ {/* Stats */} + +

+ Stats +

+
+ {[ + { + label: "Threads", + value: userThreads, + link: `/users/${user.username}/threads`, + }, + { label: "Posts", value: user.posts_count }, + { label: "Vouches", value: user.vouches }, + { label: "Credits", value: user.credits || 0 }, + ].map((stat) => ( +
+ {stat.link ? ( + +

{stat.value}

+

{stat.label}

+ + ) : ( + <> +

{stat.value}

+

{stat.label}

+ + )} +
+ ))} +
+
+ + {/* Signature (Ad Banner) */} + +

+ Signature +

+
+ {renderContentWithEmojisAndBBCode(user.signature) || + "No signature set"} +
+
+
+ + {/* Right Column */} +
+ {/* Awards */} + +

+ Awards +

+
+
+ {awards.map((award, index) => ( +
+ {award.name.slice(0, +
+ ))}
- ))} -
-
- - {/* Signature (Ad Banner) */} - -

- Signature -

-
- {renderContentWithEmojisAndBBCode(user.signature) || - "No signature set"} -
-
-
+
+ - {/* Right Column */} -
- {/* Awards */} - -

- Awards -

-
-
- {awards.map((award, index) => ( -
- {award.name.slice(0, + {/* Recent Threads */} + +

+ Recent Threads +

+
+ {recentThreads.map((thread: any) => ( +
+ + + {limitTitle(thread.title)} + + +

+ Posted in {thread.category_name} on{" "} + {new Date(thread.created_at).toLocaleDateString()} +

+

+ {thread.post_count} replies • Last post:{" "} + {timeSinceLastActivity(thread.last_post_at)} +

))} + {recentThreads.length === 0 && ( +

No recent threads found.

+ )}
-
- - - {/* Recent Threads */} - -

- Recent Threads -

-
- {recentThreads.map((thread: any) => ( -
- - - {limitTitle(thread.title)} - - -

- Posted in {thread.category_name} on{" "} - {new Date(thread.created_at).toLocaleDateString()} -

-

- {thread.post_count} replies • Last post:{" "} - {timeSinceLastActivity(thread.last_post_at)} -

-
- ))} - {recentThreads.length === 0 && ( -

No recent threads found.

- )} -
-
+ +
-
-
- - {showReputationPopup && ( - + + + {showReputationPopup && ( -

- Reputation -

-
- {reputations.map((reputation: any) => ( -
-

- - - {reputation.voter_username} + +

+ Reputation +

+
+ {reputations.map((reputation: any) => ( +
+

+ + + {reputation.voter_username} + + + :{" "} + 0 + ? "text-green-500" + : "text-red-500" + } font-bold`} + > + {reputation.reputation_change > 0 ? "+" : ""} + {reputation.reputation_change} - - :{" "} - 0 - ? "text-green-500" - : "text-red-500" - } font-bold`} +

+

{reputation.comment}

+
+ ))} +
+ {currentUser && currentUser !== user.username && ( +
+

+ Add/Edit Reputation +

+
+ + - setReputationChange(parseInt(e.target.value)) - } - > - - - - - - - - - - - - -
-
- - -
-
- - + + + + + + + + + + + + +
+
+ + +
+
+ + +
-
- )} - + )} + + - - )} - -
+ )} +
+ + ); } diff --git a/infra/database.ts b/infra/database.ts index 995a6dc..7cca270 100644 --- a/infra/database.ts +++ b/infra/database.ts @@ -46,15 +46,12 @@ export default database; function getSSLValues() { if (process.env.NODE_ENV === "production") { - console.log("In production.. trying to get SSL values"); if (process.env.POSTGRES_CA) { - console.log("SSL values found"); return { ca: process.env.POSTGRES_CA, rejectUnauthorized: false, }; } - console.log("No SSL values found"); return false; } return false; diff --git a/next.config.mjs b/next.config.mjs index 4678774..2966c42 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,61 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "i.imgur.com", + }, + { + protocol: "https", + hostname: "imgur.com", + }, + { + protocol: "https", + hostname: "*.imgur.com", + }, + { + protocol: "https", + hostname: "i.redd.it", + }, + { + protocol: "https", + hostname: "i.pinimg.com", + }, + { + protocol: "https", + hostname: "*.cloudfront.net", + }, + { + protocol: "https", + hostname: "*.staticflickr.com", + }, + { + protocol: "https", + hostname: "images.unsplash.com", + }, + { + protocol: "https", + hostname: "*.googleusercontent.com", + }, + { + protocol: "https", + hostname: "*.cdninstagram.com", + }, + { + protocol: "https", + hostname: "pbs.twimg.com", + }, + { + protocol: "https", + hostname: "*.fbcdn.net", + }, + { + protocol: "https", + hostname: "i.ytimg.com", + }, + ], + }, +}; export default nextConfig; From 4033bd5c1ca3de3973e6d89531c0aaa29c18ba3b Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 21:12:57 -0300 Subject: [PATCH 11/16] Refactor .env file to separate POSTGRES_HOST and POSTGRES_PORT variables and include Postgres CA certificate --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 32953a6..8a4d4b5 100644 --- a/.env +++ b/.env @@ -3,7 +3,7 @@ POSTGRES_PORT=5432 POSTGRES_USER=local_user POSTGRES_DB=local_db POSTGRES_PASSWORD=local_password -POSTGRES_CGA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" +POSTGRES_CA="-----BEGIN CERTIFICATE-----\nMIIDhjCCAwygAwIBAgISBNzos6EbVpPFn8nem8wBwErWMAoGCCqGSM49BAMDMDIx\nCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF\nNjAeFw0yNDEwMDcxNjAyMThaFw0yNTAxMDUxNjAyMTdaMBUxEzARBgNVBAMTCmFs\ncGVuZWQuaW8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT3CdKEpCiMAENO9z4R\n3uQPiq/Ww5YKyYEYXdYUsIxNbMm6eeDUHZhC/Dbd+BFwtdUN+0cdZJxGJ7EkN/qu\nPgslo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMB\nBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBTjwnHYRiaBlBqSK4c1\nsRi6xUvs9jAfBgNVHSMEGDAWgBSTJ0aYA6lRaI6Y1sRCSNsjv1iU0jBVBggrBgEF\nBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9lNi5vLmxlbmNyLm9yZzAiBggr\nBgEFBQcwAoYWaHR0cDovL2U2LmkubGVuY3Iub3JnLzAlBgNVHREEHjAcggphbHBl\nbmVkLmlvgg53d3cuYWxwZW5lZC5pbzATBgNVHSAEDDAKMAgGBmeBDAECATCCAQUG\nCisGAQQB1nkCBAIEgfYEgfMA8QB2AM8RVu7VLnyv84db2Wkum+kacWdKsBfsrAHS\nW3fOzDsIAAABkmftKG4AAAQDAEcwRQIhALewnaUKAvEbs2GE31Yp7k6eBt6pW+2/\nVRgHotXHj68RAiAvnZ6I5YntLrj7Hez7IVgN3dUoVpKr0SyrqIpL29O1NwB3AH1Z\nHhLheCp7HGFnfF79+NCHXBSgTpWeuQMv2Q6MLnm4AAABkmftKDAAAAQDAEgwRgIh\nAJDKFTWpnWYebI+5wxVDeu843KGym7QvX8DXyN6SAIJiAiEA2Ro751daHDfhAKxS\nzT+LWSPWRpSMhCnqHeUqvzUjmG4wCgYIKoZIzj0EAwMDaAAwZQIxAMk8OvpQsgGQ\nM1Cjgp47y+2fI3dBVIyUed9tSYSsreWGSJJdtBlIJr59ZqYscBZ7RAIwFUmWNTJG\n6P+GueQv+BOvR10/DdGo7MvqyqbJoBgFVnpsJ7mRuFgZ3S7X2pdg/10r\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEVzCCAj+gAwIBAgIRALBXPpFzlydw27SHyzpFKzgwDQYJKoZIhvcNAQELBQAw\nTzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh\ncmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw\nWhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg\nRW5jcnlwdDELMAkGA1UEAxMCRTYwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATZ8Z5G\nh/ghcWCoJuuj+rnq2h25EqfUJtlRFLFhfHWWvyILOR/VvtEKRqotPEoJhC6+QJVV\n6RlAN2Z17TJOdwRJ+HB7wxjnzvdxEP6sdNgA1O1tHHMWMxCcOrLqbGL0vbijgfgw\ngfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD\nATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSTJ0aYA6lRaI6Y1sRCSNsj\nv1iU0jAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB\nAQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g\nBAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu\nY3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAfYt7SiA1sgWGCIpunk46r4AExIRc\nMxkKgUhNlrrv1B21hOaXN/5miE+LOTbrcmU/M9yvC6MVY730GNFoL8IhJ8j8vrOL\npMY22OP6baS1k9YMrtDTlwJHoGby04ThTUeBDksS9RiuHvicZqBedQdIF65pZuhp\neDcGBcLiYasQr/EO5gxxtLyTmgsHSOVSBcFOn9lgv7LECPq9i7mfH3mpxgrRKSxH\npOoZ0KXMcB+hHuvlklHntvcI0mMMQ0mhYj6qtMFStkF1RpCG3IPdIwpVCQqu8GV7\ns8ubknRzs+3C/Bm19RFOoiPpDkwvyNfvmQ14XkyqqKK5oZ8zhD32kFRQkxa8uZSu\nh4aTImFxknu39waBxIRXE4jKxlAmQc4QjFZoq1KmQqQg0J/1JF8RlFvJas1VcjLv\nYlvUB2t6npO6oQjB3l+PNf0DpQH7iUx3Wz5AjQCi6L25FjyE06q6BZ/QlmtYdl/8\nZYao4SRqPEs/6cAiF+Qf5zg2UkaWtDphl1LKMuTNLotvsX99HP69V2faNyegodQ0\nLyTApr/vT01YPE46vNsDLgK+4cL6TrzC/a4WcmF5SRJ938zrv/duJHLXQIku5v0+\nEwOy59Hdm0PT/Er/84dDV0CSjdR/2XuZM3kpysSKLgD1cKiDA+IRguODCxfO9cyY\nIg46v9mFmBvyH04=\n-----END CERTIFICATE-----" DATABASE_URL=postgresql://local_user:local_password@localhost:5432/local_db From cd9cf70e44cbba979bde477736f8aaed10714670 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 21:22:28 -0300 Subject: [PATCH 12/16] Refactor .env file to separate POSTGRES_HOST and POSTGRES_PORT variables and include Postgres CA certificate --- .gitignore | 3 +- components/UserProfile.tsx | 12 +- package-lock.json | 449 +++++++++++++++++++++++++++++++++++++ package.json | 1 + 4 files changed, 460 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index fc230c7..c4a8eca 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,5 @@ yarn-error.log* next-env.d.ts # Socket server -socket-server/node_modules \ No newline at end of file +socket-server/node_modules +.env diff --git a/components/UserProfile.tsx b/components/UserProfile.tsx index 53aad95..7eeacb6 100644 --- a/components/UserProfile.tsx +++ b/components/UserProfile.tsx @@ -7,7 +7,9 @@ import customEmojis from "@/models/custom-emojis"; import Image from "next/image"; import dynamic from "next/dynamic"; -const ErrorBoundary = dynamic(() => import("@/components/ErrorBoundary")); +const ErrorBoundary = dynamic(() => import("@/components/ErrorBoundary"), { + ssr: false, +}); const apiUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"; @@ -34,9 +36,9 @@ export default function UserProfile({ // TODO: Implement awards system API retrival const awards = [ { name: "Diamond.svg" }, - { name: "Diamond.svg" }, - { name: "Diamond.svg" }, - { name: "Diamond.svg" }, + // { name: "Diamond.svg" }, + // { name: "Diamond.svg" }, + // { name: "Diamond.svg" }, // Add more awards as needed ]; @@ -263,6 +265,8 @@ export default function UserProfile({ e.target.onerror = null; e.target.src = "/winter_soldier.gif"; }} + blurDataURL="/winter_soldier.gif" + priority />
=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3209,6 +3581,19 @@ "node": ">=6" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -3227,6 +3612,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -8414,6 +8809,45 @@ "license": "ISC", "peer": true }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -8483,6 +8917,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", diff --git a/package.json b/package.json index 0c37cc1..0ea993f 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "react-icons": "^5.3.0", "react-password-strength-bar": "^0.4.1", "react-snowfall": "^2.1.0", + "sharp": "^0.33.5", "socket.io": "^4.7.5", "socket.io-client": "^4.7.5", "zod": "^3.23.8" From 147e6a839eefa109bcd56d075a34ab465c9dd52d Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 21:33:36 -0300 Subject: [PATCH 13/16] Refactor UserProfile component to include user signature in the profile page --- components/UserProfile.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/components/UserProfile.tsx b/components/UserProfile.tsx index 7eeacb6..164b963 100644 --- a/components/UserProfile.tsx +++ b/components/UserProfile.tsx @@ -32,6 +32,7 @@ export default function UserProfile({ const [userReputations, setReputations] = useState(0); const [userLikes, setUserLikes] = useState(0); const [userThreads, setUserThreads] = useState(0); + const [signature, setSignature] = useState(user.signature); // TODO: Implement awards system API retrival const awards = [ @@ -116,6 +117,7 @@ export default function UserProfile({ setReputations(data.reputation); setUserLikes(data.likes_received); setUserThreads(data.threads_count); + setSignature(data.signature); } else { console.error("Failed to fetch user data"); } @@ -401,6 +403,7 @@ export default function UserProfile({ {/* Signature (Ad Banner) */}
- {renderContentWithEmojisAndBBCode(user.signature) || + {renderContentWithEmojisAndBBCode(signature) || "No signature set"}
From f602dfdf39a9dac2d150c51b10f764c635c66b57 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 21:57:26 -0300 Subject: [PATCH 14/16] Refactor .env file to exclude unnecessary entries and add Postgres CA certificate --- .gitignore | 2 +- app/(dashboard)/page.tsx | 61 +++++++++++++++++++++++++++++----------- 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index c4a8eca..46b0443 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ yarn-debug.log* yarn-error.log* # local env files +.env .env*.local # vercel @@ -37,4 +38,3 @@ next-env.d.ts # Socket server socket-server/node_modules -.env diff --git a/app/(dashboard)/page.tsx b/app/(dashboard)/page.tsx index ca48091..cc7b0f6 100644 --- a/app/(dashboard)/page.tsx +++ b/app/(dashboard)/page.tsx @@ -3,15 +3,40 @@ import React from "react"; import { useSession } from "next-auth/react"; import { useRouter } from "next/navigation"; -import { CircularProgress } from "@mui/material"; -import ForumSummary from "@/components/ForumSummary"; -import StickyTopics from "@/components/AnnouncementsTopics"; -import RecentTopics from "@/components/RecentTopics"; -import AnimatedDashboard from "@/components/AnimatedDashboard"; -import MountainBackground from "@/components/MountainBackground"; -import Shoutbox from "@/components/Shoutbox"; - -export default function ForumDashboard() { +import CircularProgress from "@mui/material/CircularProgress"; +import dynamic from "next/dynamic"; + +const DynamicShoutbox = dynamic(() => import("@/components/Shoutbox"), { + loading: () =>

Loading Shoutbox...

, +}); + +const DynamicForumSummary = dynamic(() => import("@/components/ForumSummary"), { + loading: () =>

Loading Forum Summary...

, +}); + +const DynamicStickyTopics = dynamic( + () => import("@/components/AnnouncementsTopics"), + { + loading: () =>

Loading Sticky Topics...

, + }, +); + +const DynamicRecentTopics = dynamic(() => import("@/components/RecentTopics"), { + loading: () =>

Loading Recent Topics...

, +}); + +const MemoizedMountainBackground = React.memo( + dynamic(() => import("@/components/MountainBackground")), +); +const DynamicAnimatedDashboard = dynamic( + () => import("@/components/AnimatedDashboard"), +); + +interface ForumDashboardProps { + // Add any props if needed +} + +const ForumDashboard: React.FC = () => { const { data: session, status } = useSession(); const router = useRouter(); @@ -26,25 +51,27 @@ export default function ForumDashboard() { return (
- +
- +

Welcome, {session?.user?.name}

- - + +
- - + +
-
+
); -} +}; + +export default ForumDashboard; From 69883156b14681881b60fec629612d391a2cb204 Mon Sep 17 00:00:00 2001 From: EduContin Date: Mon, 7 Oct 2024 22:20:01 -0300 Subject: [PATCH 15/16] Refactor ForumDashboard and Navbar components --- app/(dashboard)/page.tsx | 6 ++++- components/Navbar.tsx | 56 +++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/app/(dashboard)/page.tsx b/app/(dashboard)/page.tsx index cc7b0f6..e460c07 100644 --- a/app/(dashboard)/page.tsx +++ b/app/(dashboard)/page.tsx @@ -41,7 +41,11 @@ const ForumDashboard: React.FC = () => { const router = useRouter(); if (status === "loading") { - return ; + return ( +
+ +
+ ); } if (status === "unauthenticated") { diff --git a/components/Navbar.tsx b/components/Navbar.tsx index adf2638..3589804 100644 --- a/components/Navbar.tsx +++ b/components/Navbar.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useEffect, useRef, useState } from "react"; +import React, { useCallback, useEffect, useRef, useState } from "react"; import Link from "next/link"; import { useSession, signOut } from "next-auth/react"; import Image from "next/image"; @@ -12,9 +12,9 @@ const Navbar: React.FC = () => { const dropdownRef = useRef(null); - const handleDropdownClick = (e: React.MouseEvent) => { + const handleDropdownClick = useCallback((e: React.MouseEvent) => { e.stopPropagation(); - }; + }, []); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -50,39 +50,35 @@ const Navbar: React.FC = () => { fetchAvatarUrl(); }, [session]); - const toggleDropdown = () => { - setIsDropdownOpen(!isDropdownOpen); - }; + const toggleDropdown = useCallback(() => { + setIsDropdownOpen((prev) => !prev); + }, []); + + const navLinks = [ + { href: "/", label: "Home" }, + { href: "/upgrade", label: "Upgrade" }, + { href: "/search", label: "Search" }, + { href: "/games", label: "Games" }, + { href: "/market", label: "Market" }, + { href: "/mm", label: "MiddleMan" }, + { href: "/affiliate", label: "Affiliate" }, + { href: "/help", label: "Help" }, + ]; return (